使用DataAnnotations进行验证,但不使用表定义

时间:2015-05-22 16:04:37

标签: c# .net entity-framework

我有一个数据库,我需要能够加载所有数据。让我们说表名是Person,而人有一列SSID(不要担心这不是真正的表)。

我将数据批量复制到此表中,并且不希望出现任何问题,因此SSIDnvarchar (8000)。然后使用EF我想将这些数据加载到内存中并验证它的字符串长度是否正确,并在将它们推送到最终表之前修复它们(这部分并不简单,需要进行转换)。

所以我的EF模型:

public class Person
{
     [MinLength(9)]
     [MxnLength(9)]
     public string SSID { get; set;}

     //... more code
}

因为我们首先使用代码,所以MaxLength属性将用于确定表中的varchar长度,这是我们不希望发生的。我只是希望能够Validator.Validate(person)并获得每个验证问题。

最好的办法是什么?

一个想法是2个模型,一个用于实际DB,另一个用于验证。似乎从一个到另一个的数据绑定可能是昂贵/乏味的。

另一个想法是重新实现MaxLength和我们需要做同样事情的其他属性,但EF可能不知道如何处理它因此它不会尝试进行架构更改。

另一个想法是EF中可能有一个设置忽略某些数据注释?

感谢您的帮助。

0 个答案:

没有答案