1

我是 ASP.Net MVC 的新手,我有一个问题,我似乎无法在 Google 上找到答案。

我有一个页面需要一个模型,该模型与数据在数据库中的存储方式有很大不同。MyModel ConvertToMvcModel(DataFromDatabase d编写一个从数据库模型转换为所需 MVC 模型 ( )的函数对我来说是微不足道的。

我的问题,我应该把这段代码放在哪里?它应该在控制器中。是否应该在数据访问层(使用存储库模式)。

另一个相关的问题是我应该把存储库类放在哪里?到目前为止,我已经将存储库类与模型类放在同一个 .cs 文件中,因为每个模型都有相应的存储库。这次模型将与我从存储库中获得的不同,因此将它放在同一个文件中没有多大意义。也许我应该将我所有的 DAL(存储库)与模型代码分开。

有什么建议么?

4

2 回答 2

1

我的问题,我应该把这段代码放在哪里?

理想情况下,域模型和视图模型之间的映射应放置在单独的专用映射层内。例如,如果您使用我推荐的AutoMapper,您可以将映射定义放在称为配置文件的单独文件中,并在控制器操作中简单地调用该Mapper.Map<TSource, TDest>方法。

另一个相关的问题是我应该把存储库类放在哪里?到目前为止,我已经将存储库类与模型类放在同一个 .cs 文件中,因为每个模型都有相应的存储库。

DAL 代表数据访问层,是存储库应该去的地方。您可以定义存储库必须遵守(实施)的通用合同(接口),然后针对您正在使用的不同数据源进行多个实施。

于 2012-05-21T21:39:24.383 回答
1

无论如何,您不应该返回实体,为此目的使用 ViewModels。

关于映射:您正在寻找的东西已经存在,它被称为AutoMapper。您可以让服务层将实体返回给您的控制器,控制器会将它们映射到 ViewModel 对象。

请记住只初始化一次映射,因此从您的应用程序开始启动它们。

于 2012-05-21T21:39:40.367 回答