NHibernate DTO与深度对象图
本文关键字:对象图 深度 DTO NHibernate | 更新日期: 2023-09-27 18:27:50
我正在使用MVVM编写一个智能客户端WPF应用程序,该应用程序与WCF服务层通信,WCF服务层包含使用NHibernate管理持久性的业务逻辑和域对象。我们控制着这条线的两边。
目前,我正在创建一个编辑产品详细信息的屏幕,它有一个选项卡控件,每个选项卡代表产品的某些方面,如主要详细信息、产品类别、容器类型等。最终,可能至少会有5个这样的选项卡。
到目前为止,我一直在使用SetResultTransformer将简单的域对象转换为DTO,并且工作得很好。
现在我正在处理一个更复杂的对象,我有点卡住了。我想返回一个要显示的DTO,其中包含主产品的详细信息、类别和类。就类别和类而言,我不想返回域对象的每一个属性。
问题:
1)人们如何创建一个DTO,其中有几个像本例中那样返回许多集合
2) 有没有人担心DTO变得太大?
3)当将DTO发送回后端时,最好发送具有更新值的相同类型的DTO,还是发送一些其他更面向命令的DTO?
感谢的帮助
Alex
我们目前正在使用相当大的DTO,它运行得很好。NHibernate正在进行大量的惰性加载,因此这有助于处理大对象。
我们正在为一对多关系使用袋子,它们很懒,工作得很好。
根据应用程序的类型,延迟加载可能会有点问题。我们在使用大型DTO的富客户端应用程序时遇到了一些问题,但经过一些规划和完善的体系结构,它运行得很好。
我不知道大型DTO是否真的是NHibernate的问题,但到目前为止,我们还没有遇到任何问题。
我们正在来回发送整个对象,它做得很好。NHibernate只更新了更改后的字段,这真的很好。
我不会通过web服务或类似的东西序列化NHIbernate对象(我不知道WCF服务层以及它如何与应用程序通信)。如果我通过web服务传输数据,我会生成新的数据对象并相应地填充它们,来回传输它们,并用它们更新NHibernate对象。
您尝试过Automapper吗?我用Automapper做所有的DTO映射,它的工作方式很有魅力。看看automapper。我相信你会喜欢的。