1. ホーム
  2. ef-code-first

[解決済み] EF 4.1コード優先の複合キー

2022-12-04 13:57:56

質問

私は、EF code 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"がキーである必要があります。 確かに、私はこれを回避するためにコード化することができますが、それは良いデータベース設計ではありません。

どのように解決するのですか?

をマークすることができます。 ActivityIDActivityName プロパティに Key アノテーションを使用するか、あるいは @taylonr が説明するように、流れるような 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; }

}