Dal(带Entity Framework)和Model层进入MVC

首先,我使用EF到Dal层(来自MVC的separeted项目,相同的解决方案)。 EF的EDMX文件生成的模型是Model层的实际模型? 如果是这样,我如何访问这些模型以在MVC的View层中工作? 我认为直接从视图访问数据层以使用这些模型是错误的,如果我使用“我的模型”创建一个模型层并将Dal的模型转换为我的模型……它将是重复的代码。

可能我错了,但大多数都是错的。 用代码第一种方法,我无法弄清楚这一点。

您的想法是直接从表示层访问DAL中的模型。

为了避免在将DAL对象转换为视图使用的模型时重复代码,您可以使用类似AutoMapper的东西,它应该在这种情况下为您进行重量级提升。

我认为直接从视图访问数据层以使用这些模型是错误的…

没错,适当的方法是使用View Model

当您有许多不同的值传递给视图时,允许您快速添加新条目或重命名现有条目的相同灵活性将成为您最大的敌人。您可以自行跟踪项目名称和值; 你没有得到Microsoft IntelliSense和编译器的帮助。 处理软件复杂性的唯一可靠方法是通过适当的设计。 因此,为每个视图定义对象模型可帮助您跟踪视图真正需要的内容。 我建议您为添加到应用程序的每个视图定义一个视图模型类

– Dino Esposito撰写的“编程Microsoft ASP.NET MVC”

ViewModel提供了视图所需的所有信息。 要从ViewModel和业务实体传输数据,您可以使用AutoMapper 。

不要担心重复,这是两个不同的概念,应该相互分离; 它使您的应用程序易于维护。

我可能会误解,但对我来说,使用EDMX生成为您提供的DbContext可以被视为DAL和可以被视为模型的实体。

因此,您可以直接将实体实例作为业务对象进行操作。 通过DbContext操作基础应该出现在BLL层中。 此外,您可以根据需要实施DTO。

当然,这假设您希望使用entity framework代码生成。 考虑到整体架构,使用POCO等其他选项可能更具相关性。

我在本地项目中使用视图模型,在另一个项目中使用模型。 然后在我的视图模型的页面上放置对模型的引用。 然后在我的页面上引用视图模型。 让我知道这听起来像你想要做的事情,我可以编辑一些代码。