实体框架 - DataAnnotations

Dav*_*eer 1 entity-framework asp.net-mvc-3

使用MVC3和实体框架.

我试图从数据模型中获得验证

问题:在实体框架保存中,如何自动为我的伙伴类添加[MetadataType标签?

[EdmEntityTypeAttribute(NamespaceName="ModelValidationTestModel", Name="Person")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
[MetadataType(typeof(Person_Validation))] // I want EF to put this line in automatically
public partial class Person : EntityObject
Run Code Online (Sandbox Code Playgroud)

...

[Bind(Exclude="PersonID")]
public class Person_Validation
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    [Required]
    public int Age { get; set; }
    [Required]
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用示例来自:http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

dav*_*esw 9

我认为最好的选择是不要搞乱EF生成的类.而是定义自己的部分类:

[MetadataType(typeof(Person_Validation))]
public partial class Person
{
   //rest of class may be empty
}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以在与Person_Validation类相同的文件中执行此操作.

它不是自动的,但它是安全的(您的更改不会丢失).这种方法适用于任何代码生成框架(使用部分类),而不仅仅是EF.