我一直在为一个相当大的项目一起使用 ASP.NET MVC 和 Entity Framework 进行一些研究。大多数示例通过将 .edmx 文件从 MVC 项目中移到新的 DAL 项目中来将其分离。在这个项目中,您还可以找到存储库和接口。
虽然这种方法对我来说非常有意义,但有一件事我似乎无法弄清楚:MVC 中的模型呢?在大多数示例中,控制器直接从 DAL 项目中处理存储库接口,因此不再使用 MVC 模型?还是继续使用它们是个好主意,但将它们映射到控制器中?
我一直在为一个相当大的项目一起使用 ASP.NET MVC 和 Entity Framework 进行一些研究。大多数示例通过将 .edmx 文件从 MVC 项目中移到新的 DAL 项目中来将其分离。在这个项目中,您还可以找到存储库和接口。
虽然这种方法对我来说非常有意义,但有一件事我似乎无法弄清楚:MVC 中的模型呢?在大多数示例中,控制器直接从 DAL 项目中处理存储库接口,因此不再使用 MVC 模型?还是继续使用它们是个好主意,但将它们映射到控制器中?
有 2 种类型的模型:
域模型代表您的域实体。它们可能是来自您的数据库的自动生成的 EF 类,也可能来自其他地方,例如从您正在使用的 WCF 服务生成的代理。这些应该存在于您的域层中。
另一方面,查看模型位于Models
ASP.NET MVC 项目的文件夹中。这些是您为每个视图定义的特定类。控制器操作将查询您的 DAL 层以获取一个或多个域模型并实例化您为要从此控制器呈现的给定视图专门定义的视图模型。所以一个视图模型可以保存来自多个域模型的信息(只是因为在给定的视图中你需要所有这些信息)。然后控制器将视图模型传递给视图进行显示。