我想知道验证视图字段值在实体集中唯一的最佳方法是什么:在更新到持久层之前或之后?涉及的 db 字段具有唯一约束,其表映射到 EF 模型。我看到了实体集中唯一值验证的两种方法:
- 在将更改保存到 db 之前(在模型更新期间或通过使用自定义 DataAnnotations 装饰模型)
- 将更改保存到 db之后(通过在存储库或控制器中处理持久层生成的 UpdateException)
使用第一种方法,我需要查询数据库以检查唯一性,因此任何视图更新都需要数据库选择和数据库更新。
使用第二种方法,不需要额外的选择,但很难识别错误类型和违规字段。
我更喜欢方法 2,但是确定插入/更新是否由于唯一约束而失败的问题迫使我选择方法 1。
还是有其他方法?