在使用Database First方法生成模型时,我们希望避免在下一次从数据库生成模型时覆盖更改,因此需要使用MetadataTypeAttribute
来为模型添加验证。
我注意到有些人即使使用Code First方法并且没有机会被某种自动生成的代码覆盖他们的实体类,仍然使用MetadataType
定义验证。
即使使用Code First方法定义实体模型,也有意义将这些DataAnnotations分离到部分类定义中,然后使用MetadataType
进行链接,而不是直接在实体类上应用这些DataAnnotations吗?
public class MyEntity
{
[Required]
public string Name { get; set;}
}
对比
public partial class MyEntity
{
public string Name { get; set;}
}
[MetadataType(typeof(MyEntityMetadata))]
public partial class MyEntity
{
}
public class MyEntityMetadata
{
[Required]
public string Name { get; set;}
}