使用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