Asp.net mvc MVC存储库模式-何时使用AutoMapper?
我们使用Telerik ORM生成我们的领域模型,并将它们放在一个名为DAL的类库中。然后我们有了我们的UI项目,它是一个MVC4Web应用程序。在这里,我们有存储库和模型。这里的模型是viewmodels,专门用于显示视图上的数据 现在我的问题是:Asp.net mvc MVC存储库模式-何时使用AutoMapper?,asp.net-mvc,model-view-controller,asp.net-mvc-4,Asp.net Mvc,Model View Controller,Asp.net Mvc 4,我们使用Telerik ORM生成我们的领域模型,并将它们放在一个名为DAL的类库中。然后我们有了我们的UI项目,它是一个MVC4Web应用程序。在这里,我们有存储库和模型。这里的模型是viewmodels,专门用于显示视图上的数据 现在我的问题是: 存储库是否应直接返回viewmodel 是否应将viewmodel转换为实体 使用automapper的开销是多少?应该在哪里使用 如果我们不使用automapper在存储库中转换为viewmodel,我们可能会对数据库进行不同的调用,以填充对象的
我听说存储库不应该返回视图模型,因为视图模型是特定于UI的,不应该包含在数据层中。这是真的吗?这是目前正在讨论的问题。sugestion是使用Automapper仅将域模型映射到视图模型。如果您希望将后视图模型与域模型太不协调,我建议您尝试一下您的存储库应该返回普通的域对象。ORM映射器应该将这些类作为紧密映射到数据源的类输出。要使您的存储库/控制器能够轻松地插入各种形式,如web服务、web应用程序和其他项目,就不应该应用UI属性 当您针对存储库接口的多个实现(如DI容器)时,Automapper非常有用。在将域对象转换为存储类对象或从存储类对象转换为域对象时,它非常有用。基本上,它减少了对翻译类的需求 在MVC.Model区域,您可能需要创建在UI中用作模型的域对象类的DUP。随着项目的发展,您将看到这一点的好处,尤其是当您使用各种属性进行验证、显示、本地化等时。当您拥有具有非常接近命名约定的类时,像Automapper这样的工具将大大提高生产效率 如果在Mvc.Controller类中使用映射器将数据/控制器转换为Mvc.Models,您还将看到生产率的提高 关键是跨应用程序边界与类中的属性名称保持一致