繁体   English   中英

Dal(带有实体框架)和模型层到MVC

[英]Dal (with Entity Framework) and Model layers into MVC

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

可能是我出了点问题,但大部分都是错误的。 是使用代码优先方法的,我无法弄清楚。

正确的想法是不要直接从表示层访问DAL中的模型。

为了避免在将DAL对象转换为视图使用的模型时重复代码,可以使用AutoMapper之类的东西,在这种情况下,它应该为您完成繁重的工作。

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

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

当有数十种不同的值要传递给视图时,使您快速添加新项或重命名现有项的灵活性成为您的最大敌人。 您不会从Microsoft IntelliSense和编译器获得帮助。 解决软件复杂性的唯一有效方法是通过适当的设计。 因此,为每个视图定义一个对象模型可以帮助您跟踪该视图的实际需求。 我建议您为添加到应用程序中的每个视图定义一个视图模型类

-Dino Esposito的“对Microsoft ASP.NET MVC进行编程”

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

不必担心重复,这是两个不同的概念,应该彼此分开。 它使您的应用程序易于维护。

我可能会误会,但对我而言,使用EDMX生成可以为您提供DbContext(可以视为DAL)和实体(可以视为Model)。

因此,您可以直接将实体实例作为业务对象进行操作。 通过DbContext进行的基本操作应显示在BLL层中。 此外,您可以在需要的地方实施DTO。

当然,这假设您要使用实体框架代码生成。 考虑到您的总体架构,使用POCO等其他选项可能更相关。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM