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

问题描述 投票:34回答:2

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

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

asp.net-mvc entity-framework entity-framework-5 entity-framework-6
2个回答
50
投票

似乎计划与第6版一起发布的unique constraint feature被推到了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; }

要么

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


20
投票

假设您只想在一个属性上添加唯一约束,您可以从EF6.1开始执行以下操作

MSDN

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

多列索引

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

[Index(IsUnique = true)]
public string Username { get; set; }

有关更多信息,请参阅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; } }

© www.soinside.com 2019 - 2024. All rights reserved.