asp.net-mvc – 域实体,DTO和查看模型
我有一个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等进行转换. 暴露你的实体是一个很多争论的话题.有些人会把它们推到视图/应用层.我宁愿把它们保留在服务层.我发现,当实体离开服务层时,您发现自己在与其进行交互的任何地方进行业务逻辑类型的处理,这些东西应该可能驻留在服务中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何使用Html.EditorFor与MVC3设置id
- asp.net-mvc – Context.User.Identity.Name为null与Signal
- asp.net – 防止XSS(跨站脚本)
- asp.net-mvc – 在MVC Razor视图中使用@RenderBody有什么意
- 使用xmlhttp的经典ASP页面可以发出JSON请求吗?
- ASP.NET MVC 3助手中的Tab命令
- asp.net-mvc – 我应该如何管理ASP.NET MVC 4应用程序中的成
- 如何在asp经典中使用cURL发布数据?
- asp.net – 带有自定义数据的web api帖子图片
- asp.net – 正则表达式验证器不验证空文本框
- iis – 如何查看有多少用户在线?
- asp.net – 从Controller构造器访问Request.Cook
- asp.net-core-mvc – 如何在Asp.Net Core中自定义
- asp.net-mvc-3 – asp.net mvc 3中的自定义错误页
- asp.net – 如何在vNext项目中的方法上应用Outpu
- asp.net – HtmlGenericControl(“br”)呈现两次
- ASP.NET MVC在IIS6上
- msbuild – 为什么aspnet_compiler需要对构建服务
- asp.net – 如何判断一个方法是否在UpdatePanel回
- asp.net-mvc – 为什么删除:ASP.NET MVC CheckB