我正在使用Entity Framework并通过T4生成我的POCO类 - 这些类从无任何内容继承而且非常简单(通过vs 2010中的模板创建)
我尝试使用Metadatatype属性,所以我可以创建一个伙伴类,但是当我这样做时,我不再能够看到我的属性...如果我删除了属性!这些属性出现了。
无论如何,深入搜索我发现微软的这句话
The associated class must be used with EDM or LINQ-to-SQL models because CLR
types cannot mark existing properties with new attributes. If you are working with CLR
objects directly, sometimes referred to as Plain Old CLR Object (POCO) types, you can
apply the attributes directly to the model
所以它似乎不起作用?无论如何,我很难在MODEL上插入我的Data Annotation,因为它是通过T4创建的,因此如果我编辑它然后重新运行该工具它将删除我的所有更改。
有人设法让这个工作吗?
我真的很挣扎。
答案 0 :(得分:2)
围绕SO和MVC博客圈有一个非常强烈的共识,你不应该用属性来注释你的业务/ crud / domain类。您的整个MVC堆栈不仅会依赖于您的业务/数据库类,而且您很快就会遇到多个上下文场景(相同的模型,不同的验证规则),这些场景只能通过一个模型进行验证。
为您的屏幕使用单独的视图模型,注释这些模型。
根据您的评论:“模型本身的数据注释,因为它是通过T4创建的”
我想说的是将您的数据注释放在您的视图模型上,单独留下您的POCO模型。