Entity framework 4 MVC3 EF模型首先使用POCO和ViewModels

Entity framework 4 MVC3 EF模型首先使用POCO和ViewModels,entity-framework-4,asp.net-mvc-3,viewmodel,poco,t4,Entity Framework 4,Asp.net Mvc 3,Viewmodel,Poco,T4,这里有很多关于这个话题的好帖子,我都试着读了。我是一名长期的n层开发人员,但我正尝试使用MVC3/EF应用程序。我已经通过EF POCO生成器(T4)生成了POCO。我还将ViewModels绑定到我的视图…视图中没有EF内容。我的问题与验证有关(仅U/I)。我喜欢DataAnnotation的想法,并希望使用它们。但是,要正确使用它们,我必须在ViewModels中使用它们。根据我在本网站和其他网站上看到的建议,我必须将POCO中的任何属性复制到视图模型中,并在那里进行注释。为了使这更容易,我

这里有很多关于这个话题的好帖子,我都试着读了。我是一名长期的n层开发人员,但我正尝试使用MVC3/EF应用程序。我已经通过EF POCO生成器(T4)生成了POCO。我还将ViewModels绑定到我的视图…视图中没有EF内容。我的问题与验证有关(仅U/I)。我喜欢DataAnnotation的想法,并希望使用它们。但是,要正确使用它们,我必须在ViewModels中使用它们。根据我在本网站和其他网站上看到的建议,我必须将POCO中的任何属性复制到视图模型中,并在那里进行注释。为了使这更容易,我看到了许多使用AutoMapper的建议,以使这种繁琐的映射更容易接受


我的想法正确吗?

AutoMapper只是关于从实体到视图模型的转换,反之亦然。它只是在类型之间替换类似于自定义转换运算符的代码。您仍然需要创建视图模型,并使用正确的数据注释标记特性

我还将ViewModels绑定到我的视图…视图中没有EF内容

对。理想情况下,您的POCO不应出现在您的视图中

我喜欢DataAnnotation的想法,并希望使用它们。但是,要正确使用它们,我必须在ViewModels中使用它们

对。POCO上不应该有任何数据注释

根据我在本网站和其他网站上看到的建议,我必须将POCO中的任何属性复制到视图模型中,并在那里进行注释

为什么??您是否总是绑定到POCO上的所有属性?请记住,ViewModel仅为视图服务。因此,如果您有一个表单来提交订单,那么ViewModel应该只包含维持该订单所需的内容。AutoMapper和您的自定义代码的组合可以将其映射到您的POCO

为了使这更容易,我看到了许多使用AutoMapper的建议,以使这种繁琐的映射更容易接受


@Craig是对的,它与数据注释无关。AutoMapper通过几行配置将ViewModel映射到域模型

我认为AutoMapper不会对数据注释做任何事情。是的,没错,它不会。我并不是想推断automapper会对DataAnnotation做些什么,但也许它是这样理解的……thxYes……当然……我的VM中只有相应视图所需的属性。然而,在两个虚拟机中可能有相同的属性,因此有一些重复的注释…但是我可能可以通过使用一个公共虚拟机并将其合并到其他虚拟机中来解决这个问题,以避免重复…非常好的输入和提示reply@Bayrat-在模型上有重复注释没有错。但是数据注释的“代码”只实现了一次。是的……这个网站上的帖子已经非常清楚了。谢谢你的澄清。