是否可以使用Entity Framework Code First设置唯一约束?

sub*_*ner 39 asp.net-mvc entity-framework entity-framework-5 entity-framework-6

我想在表中强制使用唯一约束,我正在使用Entity Framework Code-First.

是否可以使用EF 6添加唯一约束,因为我相信早期版本是不可能的.

SBi*_*are 55

似乎计划与版本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; }
Run Code Online (Sandbox Code Playgroud)

要么

您可以使用MSDN中显示的Fluent API

  • 似乎无法在EF7 - DNX中找到它. (4认同)
  • @Shimmy [无法使用数据注释创建索引](http://docs.efproject.net/zh/latest/modeling/indexes.html#data-annotations)。 (2认同)

Has*_*Ch. 22

- 假设你只想在一个属性上添加Unique约束,你可以这样做,从EF6.1开始

[Index(IsUnique = true)]
public string Username { get; set; }
Run Code Online (Sandbox Code Playgroud)

- 如果您有多个与同一索引相关的字段,那么您将使用

多列索引

跨多个列的索引是通过在给定表的多个索引注释中使用相同的名称来指定的.创建多列索引时,需要为索引中的列指定顺序.例如,以下代码在Rating和BlogId上创建一个名为IX_BlogAndRating的多列索引.BlogId是索引中的第一列,而Rating是第二列.

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; } 
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此链接