2011-02-06 72 views
9

对如何有效验证CodeFirst模型的给定属性是唯一的好奇。经典示例是成员的用户名或显示名称。EF Codefirst验证独特的属性?

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

UPDATE 我发现我可以覆盖上的DbContext,这在概念上会允许我做一个查询,然后无效,以防止保存对象的执行validateEntity方法。我仍然很想知道是否有办法在数据库中应用唯一约束或类似的代码

回答

6

Code First(和EF一般情况下)仍然本身不支持唯一约束。在this post中,我展示了一种方法来创建它们,同时您的数据库由Code First(通过自定义Initializer类中的SQLCommand方法)创建,但与您自己手动创建它并没有多大区别。另一种方法是您建议的ValidateEntity,但我仍然会在数据库上创建唯一的约束。

+0

并不完美,但对我来说已经足够好属性,谢谢! – Paul 2011-02-07 04:20:17

0

我已经张贴了关于这个在code project

一般而言,这取决于你穿上类来生成唯一索引