我有一个带有POCO域模型和NHibernate存储库层的ASP.NET MVC 2应用程序。我的域模型没有意识到我的视图模型,所以我使用automapper从viewmodel转到实体,反之亦然。域实体,DTO和查看模型
当我将WCF引入到我的项目中(后期要求)时,我开始必须处理断开连接的对象。也就是说,我用NHibernate从数据库中检索一个实体,一旦实体被序列化,它就会断开连接,并且每个子集合都被加载,无论我是否计划使用它,这意味着我正在做大量不必要的数据库工作。
在阅读完本文后,我发现强烈建议您不要在您的域项目之外公开您的实体,而应该使用DTO。
我看到了这个原因,但我无法弄清楚如何实现它。
我是否将视图模型映射到ASP.NET MVC中的DTO,通过服务层发送DTO,并将映射从DTO到服务层中的实体?我应该在哪里定义我的DTO?
这当然是最适用于我的情况 - 我没有意识到有关于这个问题的辩论。我只是发现暴露我的服务层以外的实体正在引起我的悲痛 - 但直到我将WCF添加到项目中,我才开始遇到这些问题。 – Mayo 2011-03-17 02:03:51
我认为如果你的应用程序不是分布式的(应用程序和服务层之间没有网络间隙),那么它就少了一个问题。我见过他们主张在应用程序的所有图层中使用实体的MS文章。我还在“alt.net”类型的文章中经常看到上面的结构,它对我来说更好。这也简化了我对应用程序的思考,该服务真正成为该领域的切入点。 – Brook 2011-03-17 02:38:17