使用MVC2和EF4进行自定义验证

时间:2010-05-01 11:31:39

标签: asp.net-mvc entity-framework custom-validators

ScottGu博客上的

是如何在EF4中使用MVC2自定义验证的示例: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

所以问题在这里:

当VS2010中的Designer为数据库创建对象时,您必须将[MetadataType(typeof(Person_validation))]注释添加到该类。

但是当我在Designer中更改任何内容时,所有这些注释都会丢失。

是否可以对edmx文件进行自我更改,或者是否有更好的方法将System.ComponentModel.DataAnnotations应用于生成的实体?

感谢。

1 个答案:

答案 0 :(得分:6)

你使用一种松散称为“伙伴类”的模式。基本上你要做的是用元数据创建一个单独的类,并创建一个将生成的实体耦合到你的伙伴类的部分类。

举一个简单的例子,假设你有一个Person实体,并且想要设置FirstName属性。这是您在生成的文件之外执行的操作:

[MedadataType(typeof(PersonMetadata))]
partial class Person { } // the other part is generated by EF4

public class PersonMetadata
{
    // All attributes here will be merged into the generated class,
    // thanks to the partial class above. Just apply attributes as usual.

    [Required]
    public string FirstName { get; set; }
}

您可以找到有关此方法的更多详细信息here。在你链接的文章中,ScottGu实际上也在谈论它。请看标题“第5步:坚持使用数据库”;)