0

我想知道验证视图字段值在实体集中唯一的最佳方法是什么:在更新到持久层之前或之后?涉及的 db 字段具有唯一约束,其表映射到 EF 模型。我看到了实体集中唯一值验证的两种方法:

  1. 将更改保存到 db 之前(在模型更新期间或通过使用自定义 DataAnnotations 装饰模型)
  2. 将更改保存到 db之后(通过在存储库或控制器中处理持久层生成的 UpdateException)

使用第一种方法,我需要查询数据库以检查唯一性,因此任何视图更新都需要数据库选择和数据库更新。

使用第二种方法,不需要额外的选择,但很难识别错误类型和违规字段。

我更喜欢方法 2,但是确定插入/更新是否由于唯一约束而失败的问题迫使我选择方法 1。

还是有其他方法?

4

1 回答 1

0

检查唯一约束的首选和推荐方法是通过自定义 DataAnnotation 属性从 UI。使用这种方法,您必须编写一些代码,但这是所有站点为检查唯一性约束所做的。然而,asp.net mvc 3 提供了开箱即用的RemoteAttribute来检查唯一性约束。我建议使用第一种方法,因为如果您以良好的方式组织它,一些微小的 ajax 调用不会对性能产生明显影响。

于 2011-05-04T11:22:18.623 回答