EFコードFirst 4.1 RCを使用して複合キーを取得する方法を見つけようとしています。
現在、[キー]データアノテーションを使用していますが、複数のキーを指定することはできません。
複合キーをどのように指定しますか?
これが私の例です:
public class ActivityType
{
[Key]
public int ActivityID { get; set; }
[Required(ErrorMessage = "A ActivityName is required")]
[StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
public string ActivityName { get; set; }
}
「ActivityName」もキーにする必要があります。確かに、私はこの周りにコーディングできますが、それは良いデータベース設計ではありません。
ActivityID
プロパティとActivityName
プロパティの両方にKey
注釈を付けるか、@ taylonrで説明されているFluent APIを使用できます。
編集:
これは機能するはずです-アノテーションで定義された複合キーには、明示的な列順序が必要です:
public class ActivityType
{
[Key, Column(Order = 0)]
public int ActivityID { get; set; }
[Key, Column(Order = 1)]
[Required(ErrorMessage = "A ActivityName is required")]
[StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
public string ActivityName { get; set; }
}
注釈は使用せず、代わりにモデルビルダーをオーバーライドします。この場合、次のようなことができます。
modelBuilder.Entity<Activity>().HasKey(a => new { a.ActivityId, a.ActivityName });