web-dev-qa-db-ja.com

Entity Framework Code First CTP5を使用して、INTであり、ID列ではない主キー列を作成するにはどうすればよいですか?

Entity Framework Code First CTP5を使用して、INTであり、ID列ではない主キー列を作成するにはどうすればよいですか?

できれば属性を使用しないでください。

34
ajma

プロパティの属性を使用するのではなく、流暢なインターフェイスを使用してエンティティを構築している場合は、DatabaseGenerationOptionクラス(EntityFramework.dllのSystem.ComponentModel.DataAnnotations名前空間)を使用できる場合があります。私はそれをテストしていませんが、これはそれがどのように見えるかです:

modelBuilder
    .Entity<Foo>()
    .Property(f => f.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
30
Matt Hamilton

その答えは私にはうまくいきませんでした(EF4.1)。

これを機能させるために、データベース生成属性をキー列に追加しました。

public class FacebookUser
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.None)]
  public long FacebookId { get; set; }

  // ...
}

これが誰かを助けることを願っています。

46
Jay Querido

小さな変化

public class User
{

  [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]

  public int ID { get; set; }

  // Rest of the code
}
12
venkat