唯一值验证:更新持久层之前还是之后?

发布于 2024-11-05 04:13:13 字数 439 浏览 4 评论 0原文

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

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

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

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

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

或者还有其他方法吗?

I'm wondering what's the best method for validating a view field value to be unique in an entityset: before or after the update to persistence layer?
The involved db field has an unique constraint, and its table is mapped to an EF model.
I see two ways for unique value validation in an entityset:

  1. before saving changes to db (during model update or by decorating with custom DataAnnotations the model)
  2. after saving changes to db (by handling in the repository or controller the UpdateException generated by the persistence layer)

With the 1st method I need to query the db for checking the uniqueness, so any view update will require both a db select and a db update.

With the 2nd method, the additional select is not required, but it is difficult to identify the error type and the offending field.

I would prefer method 2, but the problem for determining if the insert/update failed due to a unique constraint force me to choose method 1.

Or is there another way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

药祭#氼 2024-11-12 04:13:13

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

The preferred and recommended way for checking unique constraint is from UI by custom DataAnnotation attribute. with this method you have to write a little code but this is what all the sites have been doing for checking uniqueness constraint. asp.net mvc 3 however provides RemoteAttribute out of the box to check uniqueness constraint. i would recommend using first method because some tiny ajax calls won't make noticeable effect on performance provided that you have organized it in a good manner.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文