Csharp/C#教程:使用Nhibernate过滤使用Aggregate Root返回的子集合分享


使用Nhibernate过滤使用Aggregate Root返回的子集合

我正在尝试使用Nhibernate加载聚合根的子集合。 向客户加载已发货的所有订单。 这可能吗?

好吧,您可以公开在地图中过滤的属性,如下所示:

    

‘where’属性是任意SQL。

从理论上讲,您可以拥有Customer,Orders和ShippedOrders这两个属性。 但是,我应该说我没有这样做,我想测试NH在这种情况下如何处理级联。 在任何情况下,添加/删除新项目时都必须注意将它们正确添加/删除到两个集合中。

您想要这样做的事实让我们想知道Order是否是聚合根。 从长远来看,这可能不那么麻烦:

 orderRepository.GetOrders(int customerId, OrderStatus[] statuses) 

你可以用另一种方式来看待它 – 为客户加载所有已发货的订单。

 session.CreateCriteria( typeOf(Order) ) .Add( Restrictions.Eq("Shipped", shippedStatus ) ) .Add( Restrictions.Eq("Customer", requiredCustomer) ) .List(); 

你也可以使用session.Filter(customer.Orders,“where this.Status ==’Shipped’”)使用HQL。

 ICriteria crit = session.CreateCriteria (typeof(Customer)); crit.CreateAlias ("Orders", "o"); crit.Add (Expression.Eq ("o.Status", shippedStatus)); crit.Add (Expression.Eq ("Id", customerId)); return crit.UniqueResult (); 

类似的东西。

上述就是C#学习教程:使用Nhibernate过滤使用Aggregate Root返回的子集合分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1028264.html

(0)
上一篇 2022年1月10日
下一篇 2022年1月10日

精彩推荐