EF Codefirst 验证唯一属性?

Posted

技术标签:

【中文标题】EF Codefirst 验证唯一属性?【英文标题】:EF Codefirst validate unique property? 【发布时间】:2011-02-06 17:16:49 【问题描述】:

对如何有效地验证 CodeFirst 模型的给定属性是否唯一感到好奇。经典示例是成员的用户名或显示名称。

传统上,我可以通过在数据库中设置唯一约束来做到这一点,或者在尝试插入操作期间进行查找。我知道如何在生成后手动将这些东西添加到数据库中,只是想看看是否有办法将其作为框架提供的架构映射的一部分。

更新 我发现我可以覆盖 DbContext 上的 ValidateEntity 方法,这在概念上允许我进行查找然后使对象无效以防止保存。我仍然很想知道是否有办法在数据库中应用唯一约束或类似的约束

【问题讨论】:

【参考方案1】:

Code First(以及一般的 EF)仍然 本身并不支持唯一约束。在this post 中,我展示了一种创建它们的方法,同时您的数据库由 Code First 创建(通过自定义 Initializer 类中的 SQLCommand 方法),但它与手动创建它并没有真正的不同。另一种方法是您建议的ValidateEntity,但无论如何我仍会在数据库上创建唯一约束。

【讨论】:

【参考方案2】:

我已在 code project

上发布了相关信息

一般来说,这取决于您放在类上的属性来生成唯一索引

【讨论】:

以上是关于EF Codefirst 验证唯一属性?的主要内容,如果未能解决你的问题,请参考以下文章

EF6 codefirst 中的唯一多列

如何在EF CodeFirst中使用唯一约束

EF Core 中是不是有用于唯一约束的数据注释(代码优先)?

ASP.NET MVC 4,EF5,模型中的唯一属性 - 最佳实践?

如何首先在 EF6 代码中设置唯一的属性 [重复]

使用 EF Code First 控制属性唯一性的最佳方法