我有一个ASP.NET MVC 2应用程序,具有POCO域模型和NHibernate存储库层。我的域模型没有意识到我的视图模型,因此我使用automapper从视图模型转换到实体,反之亦然。
当我向项目引入WCF(晚期要求)后,我开始处理断开连接的对象。也就是说,我使用NHibernate从数据库检索实体,一旦该实体被序列化,它就变得与数据库断开连接,并且每个子集合都会被加载,无论我是否计划使用它,这意味着我正在做很多不必要的数据库工作。
阅读了相关资料后,我发现强烈建议您不要在域项目之外公开实体,而是应使用数据传输对象(DTOs)。
我理解这个原因,但我无法确定如何实施。
我应该在ASP.NET MVC中从视图模型映射到DTO,在服务层中传递DTO并从DTO映射到实体吗? 我应该在哪里定义我的DTO?