asp.net MVC 2 - 唯一值验证:更新到持久性层之前或之后



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

  1. 将更改保存到数据库之前(在模型更新期间或通过自定义数据注释修饰模型)
  2. 将更改保存到数据库(通过在存储库或控制器中处理持久性层生成的 UpdateException)

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

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

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

还是有别的办法?

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

相关内容

  • 没有找到相关文章

最新更新