加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 域实体,DTO和查看模型

发布时间:2020-12-15 23:38:47 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC 2应用程序与一个POCO域模型和一个NHibernate库层.我的域模型没有意识到我的视图模型,所以我使用automapper从viewmodel到实体和反之亦然. 当我向我的项目介绍WCF(迟到的要求)时,我开始处理断开的对象.也就是说,我使用NHibernate从数据库
我有一个ASP.NET MVC 2应用程序与一个POCO域模型和一个NHibernate库层.我的域模型没有意识到我的视图模型,所以我使用automapper从viewmodel到实体和反之亦然.

当我向我的项目介绍WCF(迟到的要求)时,我开始处理断开的对象.也就是说,我使用NHibernate从数据库中检索一个实体,一旦该实体被序列化,它将被断开连接,并且每个子集合都被加载,而不管我是否计划使用它意味着我正在做很多不必要的数据库工作.

在阅读之后,我看到强烈建议您不要将您的实体暴露在您的域名项目之外,而应该使用DTO.

我看到这个原因,但我无法确定如何实现它.

在ASP.NET MVC中,将viewmodel映射到DTO,通过服务层发送DTO,并将DTO映射到服务层中的实体?我应该在哪里定义我的DTO?

解决方法

我喜欢让我的服务层保持实体封装,并返回/接收只有DTO.我将服务合同和DTO保留在MVC项目和服务实施参考的单独的程序集中.

在服务调用实现中,服务将dto映射到实体,然后根据需要与存储库和其他实体进行交互.

在应用程序/ mvc项目中,我有时会懒惰,只是使用DTO作为某些操作(特别是CRUDY)的模型.如果我需要一个投影或类似的东西,那么我将做一个视图模型,并在DTO和viewmodel之间用automapper等进行转换.

暴露你的实体是一个很多争论的话题.有些人会把它们推到视图/应用层.我宁愿把它们保留在服务层.我发现,当实体离开服务层时,您发现自己在与其进行交互的任何地方进行业务逻辑类型的处理,这些东西应该可能驻留在服务中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读