我的项目中有以下模型
public class Category { public Guid ID { get; set; } [Required(ErrorMessage = "Title cannot be empty")] public string Title { get; set; } }
并且我试图Title作为唯一键,我用谷歌搜索了解决方案,但找不到任何解决方案。请问有什么建议我可以做的吗?
不幸的是,您不能首先将其定义为代码中的唯一键,因为EF根本不支持唯一键(希望在下一个主要版本中计划使用)。您可以做的是创建自定义数据库初始化器,并通过调用SQL命令手动添加唯一索引:
public class MyInitializer : CreateDatabaseIfNotExists<MyContext> { protected override void Seed(MyContext context) { context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX IX_Category_Title ON Categories (Title)"); } }
并且必须在应用程序的引导程序中设置此初始化程序。
Database.SetInitializer<MyContext>(new MyInitializer());
编辑
现在(从EF 6.1开始),您可以轻松拥有独特的约束条件,
[Index("TitleIndex", IsUnique = true)] public string Title { get; set; }