2

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

所以这里的问题:

当 VS2010 中的设计器为数据库创建对象时,除了示例之外,您还必须向该类添加 [MetadataType(typeof(Person_validation))] 注释。

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

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

谢谢。

4

1 回答 1

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; }
}

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

于 2010-05-01T11:44:07.453 回答