テーブルに一意の制約を適用したいのですが、Entity Framework Code-Firstを使用しています。
以前のバージョンでは不可能だったと考えているため、EF 6を使用して一意の制約を追加することは可能ですか?.
バージョン6でリリースする予定だった 一意の制約機能 は6.1にプッシュされたようです。
EF 6.1では、次のようにIndex属性を使用して制約を定義できます。
[Index("IX_FirstAndSecond", 1, IsUnique = true)]
public int FirstColumn { get; set; }
[Index("IX_FirstAndSecond", 2, IsUnique = true)]
public int SecondColumn { get; set; }
OR
[〜#〜] msdn [〜#〜] に示すように、Fluent APIを使用できます。
一意の制約を1つの属性のみに追加するとします。EF6.1以降、次のようにできます。
[Index(IsUnique = true)]
public string Username { get; set; }
同じインデックスに関連する複数のフィールドがある場合は、次を使用します:
複数列インデックス
複数の列にまたがるインデックスは、特定のテーブルの複数のインデックスアノテーションで同じ名前を使用して指定されます。複数列のインデックスを作成する場合、インデックス内の列の順序を指定する必要があります。たとえば、次のコードは、IX_BlogAndRatingという名前のRatingおよびBlogIdに複数列のインデックスを作成します。 BlogIdはインデックスの最初の列で、評価は2番目の列です。
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
[Index("IX_BlogIdAndRating", 2)]
public int Rating { get; set; }
[Index("IX_BlogIdAndRating", 1)]
public int BlogId { get; set; }
}
詳細については、 このリンク を参照してください。