关于这个主题的很多很棒的帖子,我试着全部阅读。我是一个长期的n层开发人员,但试图使用MVC3 / EF应用程序。我通过EF POCO发生器(T4)生成了POCO。我也将ViewModels绑定到我的视图......在我的视图中没有EF的东西。我的问题与验证有关(仅限U / I)。我喜欢DataAnnotations的想法,并希望使用它们。但是,要正确使用它们,我必须在我的ViewModel中使用它们。根据我在本网站和其他网站上看到的建议,我将不得不将我的POCO中的任何属性复制到我的视图模型中并在那里进行注释。为了使这更容易,我已经看到很多建议使用AutoMapper使这个繁琐的映射更加可忍受。
我几乎有正确的想法吗?
答案 0 :(得分:4)
我也将ViewModels绑定到我的视图......我的视图中没有EF内容
正确。 理想情况,您的POCO不应该在您的观点上。
我喜欢DataAnnotations的想法,并希望使用它们。但是,要正确使用它们,我必须在我的ViewModels中使用它们
正确。您的POCO上不应该有任何数据注释。
根据我在本网站和其他网站上看到的建议,我必须将我的POCO中的任何属性复制到我的视图模型中并在那里进行注释
为什么呢?您是否始终绑定到POCO上的所有属性?请记住,ViewModel仅用于View。因此,如果您有一个表单来提交订单,ViewModel应该只包含保留该订单所需的内容。然后,AutoMapper和您的自定义代码的组合可以将其映射到您的POCO。
为了让这更容易,我看到很多建议使用AutoMapper使这个繁琐的映射更加可忍受
@Craig是对的,它与数据注释无关。 AutoMapper使用几行配置将ViewModel映射到您的域模型。
答案 1 :(得分:0)
AutoMapper仅涉及从实体到视图模型的转换,反之亦然。它只是代替类型之间的自定义转换运算符等代码。您仍然需要创建视图模型并使用正确的数据注释标记属性。