我想知道在持久对象上验证属性长度最方便的地方。
比方说,我的Db中有一个名为Country的表,其中包含CountryCode nvarvhar(3)。
我有一个映射对象Country with property propertyCode,可以保存到Db。
我应该在哪里检查用户设置的国家/地区代码是否不超过3个字符:
由于
答案 0 :(得分:1)
根据代码安全建议,所有检查都应尽早进行。此外,建议各方自行执行检查,而不依赖于其他方验证。
答案 1 :(得分:1)
我发现最简单的方法是允许将属性设置为任何值(无论如何都是正确的数据类型),然后在保存之前对其进行验证。
我喜欢使用.Net中内置的验证属性。这保持了与属性相关的逻辑。有一个StringLengthAttribute类可以解决你所要求的问题。
属性位于System.ComponentModel.DataAnnotations命名空间中(您需要引用同名的程序集)。
MVC和EntityFramework有一种内置的方法来验证数据。如果您需要自己执行逻辑,这里有一些代码可以帮助您开始...
var ctx = new ValidationContext(obj, null, null);
Validator.ValidateObject(obj, ctx);