首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dal (带有实体框架)和MVC模型层

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

Stack Overflow用户
提问于 2013-09-13 14:23:32
回答 4查看 4.3K关注 0票数 2

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

可能我搞错了,但大多数人。是用代码优先的方法,我搞不懂这一点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-13 15:13:31

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

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

票数 3
EN

Stack Overflow用户

发布于 2013-09-13 19:25:33

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

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

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

--迪诺·埃斯波西托的“编程微软ASP.NET MVC”

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-09-13 14:42:18

我可能错了,但对我来说,使用从EDMX生成的DbContext可以被认为是DAL,实体可以被认为是模型。

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

当然,这假设您希望使用实体框架代码生成。考虑到您的总体架构,使用POCOs之类的其他选项可能更有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18788705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档