唯一键和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

回到顶部