gpt4 book ai didi

c# - 我如何使用验证来强制 ASP.NET MVC 2 中的属性的唯一性?

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:28 25 4
gpt4 key购买 nike

想象一个对象,其字段在数据库中不能有重复值。我的第一直觉是创建一个独特的属性,我可以将其用作属性的数据注释。这个独特的属性会访问数据库并检查该值是否已经存在。这在执行创建方法时会起作用,但在更新时会失败。在更新时,对于我不想更改其值的实体的每个唯一字段,我都会收到重复值错误。在 ASP.NET MVC 2 上以非常适合 ModelState 的方式完成此操作的好方法或既定做法是什么?将我的对象的 ID 传递给属性验证器可以通过检查找到的重复值是否属于我正在更新的同一实体来工作,但我不知道如何从验证器内部获取该数据。

如果这是一个愚蠢的问题或者措辞不连贯,请原谅我。快凌晨 3 点了,我从昨天早上就开始编码了。

最佳答案

对于这种验证,我会让数据库做它已经做得很好的事情。确保您的数据库具有唯一约束,如果您违反它,让它报告错误。然后,您可以将错误添加到模型错误中(使用友好的文本,而不是简单地插入 SQL 错误)。

如果您决定自己执行检查,则可以通过排除当前记录来解决更新问题...

SELECT COUNT(*)
FROM myTable
WHERE myTable.UniqueValue = 'ShouldBeUnique'
AND myTable.Id <> 5

在此示例中,您使用要更新的记录的 ID 来避免对其进行检查,这意味着您只需检查其他记录以查看它们是否包含唯一值。

关于c# - 我如何使用验证来强制 ASP.NET MVC 2 中的属性的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com