唯一键和EF代码优先
我的项目中有以下模型
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; }
以上是 唯一键和EF代码优先 的全部内容, 来源链接: utcz.com/qa/405947.html