在entity framework中使用DataAnnotations

我已经使用VS2010的entity framework来创build一个简单的人物类,名字,姓氏和电子邮件。 如果我想附加DataAnnotations就像在这篇博客文章中所做的,我有一个小问题,因为我的人类是dynamic生成的。 我可以直接编辑dynamic生成的代码,但任何时候我必须更新我的模型,我的validation代码将被清除。

第一本能是创build一个部分类,并尝试附加注释,但它抱怨说,我试图重新定义的财产。 我不确定是否可以在C#中使用C ++中的函数声明来进行属性声明。 如果你能这样做可能是答案。 这是我尝试的一个片段:

namespace PersonWeb.Models { public partial class Person { [RegularExpression(@"(\w|\.)+@(\w|\.)+", ErrorMessage = "Email is invalid")] public string Email { get; set; } /* ERROR: The type 'Person' already contains a definition for 'Email' */ } } 

一个好友类或多或less是你的代码片段正在旅行的方向,除了手动编码的部分Person类有一个内部类,如:

 [MetadataType(typeof(Person.Metadata))] public partial class Person { private sealed class MetaData { [RegularExpression(...)] public string Email { get; set; } } } 

或者你可以手动部分Person类和一个单独的Meta类,如:

 [MetadataType(typeof(PersonMetaData))] public partial class Person { } public class PersonMetaData { [RegularExpression(...)] public string Email; } 

这些是解决方法,并有一个映射的演示类可能会更合适。

您需要使用元数据“好友”类或(我的首选项) 项目到演示文稿模型,而不是将视图直接绑定到实体 。