EF Code First验证独特属性?

时间:2011-02-06 17:16:49

标签: entity-framework code-first

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

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

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

2 个答案:

答案 0 :(得分:6)

代码优先(和一般的EF)仍然本身不支持唯一约束。在this post中,我展示了一种方法来创建它们,同时您的数据库是由Code First创建的(通过自定义初始化程序类中的SQLCommand方法),但它与自己手动创建它并没有什么不同。另一种方式是你建议的ValidateEntity,但我仍然会在数据库上创建唯一的约束。

答案 1 :(得分:0)

我已在code project

发布了相关信息

通常,它取决于您在类上生成唯一索引的属性