验证可保存对象的属性长度的最方便的位置在哪里?

时间:2011-07-17 06:44:29

标签: c# .net database validation data-integrity

我想知道在持久对象上验证属性长度最方便的地方。

比方说,我的Db中有一个名为Country的表,其中包含CountryCode nvarvhar(3)。

我有一个映射对象Country with property propertyCode,可以保存到Db。

我应该在哪里检查用户设置的国家/地区代码是否不超过3个字符:

  • 在属性CountryCode
  • 的setter中
  • 保存到Db时的OR或
你能告诉我吗?

由于

2 个答案:

答案 0 :(得分:1)

根据代码安全建议,所有检查都应尽早进行。此外,建议各方自行执行检查,而不依赖于其他方验证。

答案 1 :(得分:1)

我发现最简单的方法是允许将属性设置为任何值(无论如何都是正确的数据类型),然后在保存之前对其进行验证。

我喜欢使用.Net中内置的验证属性。这保持了与属性相关的逻辑。有一个StringLengthAttribute类可以解决你所要求的问题。

属性位于System.ComponentModel.DataAnnotations命名空间中(您需要引用同名的程序集)。

MVC和EntityFramework有一种内置的方法来验证数据。如果您需要自己执行逻辑,这里有一些代码可以帮助您开始...

var ctx = new ValidationContext(obj, null, null);
Validator.ValidateObject(obj, ctx);