Nhibernate 持久化映射到单个实体的多个DTO

Nhibernate 持久化映射到单个实体的多个DTO,nhibernate,mapping,entity,dto,Nhibernate,Mapping,Entity,Dto,我想以前有人问过这个问题,但我仍然对应该采取的正确方法感到困惑 我有一个WPF客户端应用程序,它与WCF服务对话以检索数据。 在服务方面,我有一个大型实体(大约25个属性),我有 我的客户端应用程序中有三个表单。 在每个表单上,我都需要该工具来编辑我的域实体的某些属性。 我不想通过服务返回大型实体,因为每个表单上只需要3-4个属性。 因此,我创建了三个DTO(我们使用AutoMapper),每个屏幕一个。 该服务返回DTO,在检索过程中效果非常好 我的问题是如何坚持我的DTO。 我们在服务层中使

我想以前有人问过这个问题,但我仍然对应该采取的正确方法感到困惑

我有一个WPF客户端应用程序,它与WCF服务对话以检索数据。 在服务方面,我有一个大型实体(大约25个属性),我有 我的客户端应用程序中有三个表单。 在每个表单上,我都需要该工具来编辑我的域实体的某些属性。 我不想通过服务返回大型实体,因为每个表单上只需要3-4个属性。 因此,我创建了三个DTO(我们使用AutoMapper),每个屏幕一个。 该服务返回DTO,在检索过程中效果非常好

我的问题是如何坚持我的DTO。 我们在服务层中使用NHibernate。 如果我将部分DTO传递给服务以持久化,则每次执行更新时都需要重新加载大型实体

这是处理这种情况的唯一方法吗

如果需要在UI上显示单个实体的局部视图,我还有哪些其他选项。。除了通过线路发送整个实体,还是创建三个DTO


谢谢。

在服务层中使用NHibernate,您将需要:

a) 在服务的更新操作期间加载实体,修改所需属性,然后提交事务,或

b) 如果该对象已在服务中可用(但未与NHibernate会话关联),则可以修改所需属性,调用session.Update(obj)将该对象与会话重新关联,然后提交事务

我们经常使用第一种方法,在我们的模型中有数百个不同的实体。我们将专门的命令请求对象从客户端传递到服务器,然后我们的服务层负责执行命令请求中指定的工作


或者,您可以按照概述的方式制定HQL查询。但这将很快变得非常难看且难以维护。

在服务层中使用NHibernate,您将需要:

a) 在服务的更新操作期间加载实体,修改所需属性,然后提交事务,或

b) 如果该对象已在服务中可用(但未与NHibernate会话关联),则可以修改所需属性,调用session.Update(obj)将该对象与会话重新关联,然后提交事务

我们经常使用第一种方法,在我们的模型中有数百个不同的实体。我们将专门的命令请求对象从客户端传递到服务器,然后我们的服务层负责执行命令请求中指定的工作


或者,您可以按照概述的方式制定HQL查询。但这会很快变得很难看,很难维护。

谢谢。。我想我必须在更新期间加载实体。HQL变得相当混乱!谢谢我想我必须在更新期间加载实体。HQL变得相当混乱!