我是NHibernate的新手(坦白地说是DDD的概念)所以我的问题可能很简单或无关紧要,但如果有人帮我解决我的困惑,我会非常感激。
在我的应用程序中,我使用DDD和NHibernate作为ORM。
使用简单的实体它工作正常,但现在我处于我的实体变得非常复杂的阶段(因此实体A包含实体B和实体C的数组;并且每个实体C包含D和少数其他参数等等) ...)
我的客户端应用程序正在通过互联网与WCF服务(与数据库通信)进行通信,因此速度(以及有效负载大小非常重要)。在少数情况下,我必须从服务向客户端发送这些复杂DTO的数组,然后客户端更新A中的少量值并将其发送回服务器以进行保存/更新。
为了减少有效负载,我试图从我的DTO中的B和C实体中删除未使用的属性值,方法是在将数据从Service发送到客户端时在我的映射器中使它们无效(我没有使用自动播放器等)。
现在,当将实体保存回db时,我该怎么办?如果我在B和C的少数变量中传回具有空值的实体A(我在mapper中手动无效),NHibernate将在保存A时尝试保存B和C.我想只保存A,并且请求NHibernate不要保存B或C中的任何内容。
任何帮助,都会对我有所帮助。
提前致谢, d
答案 0 :(得分:1)
在这种情况下的解决方案可以在预测中找到。简而言之:
select
子句中。 这可以通过Projections
完成。很好的详细解释可以在这里找到:
http://shareyour-experience.blogspot.cz/2011/07/exploring-nhibernate-projections-and.html
文档:
http://nhibernate.info/doc/nh/en/index.html#querycriteria-projection
当数据将在服务器上返回时,完全映射的实体将能够保留所有属性。