使用Nhibernate过滤使用聚合根返回的子集合我正在尝试使用Nhibernate加载聚合根的子集合。向客户加载所有已发货的订单。是否可以?好吧,您可以像这样在映射中公开要过滤的属性:“where”属性是任意SQL。理论上,您可以拥有两个属性Customer、Orders和ShippedOrders。但是,我应该说我没有这样做,我想测试NH在这种情况下如何处理级联。在任何情况下,在添加/删除新项目时都必须注意将它们正确地添加/删除到两个集合中。您想要这样做的事实让我们想知道Order是否是聚合根。从长远来看,这可能不会那么麻烦:orderRepository.GetOrders(intcustomerId,OrderStatus[]statuses)您可以换个角度看待它-为客户加载所有已发货的订单。session.CreateCriteria(typeOf(Order)).Add(Restrictions.Eq("Shipped",shippedStatus)).Add(Restrictions.Eq("Customer",requiredCustomer)).List();您还可以使用HQL使用session.Filter(customer.Orders,"wherethis.Status=='Shipped'")。ICriteriacrit=session.CreateCriteria(typeof(Customer));crit.CreateAlias("订单","o");crit.Add(Expression.Eq("o.Status",shippedStatus));crit.Add(Expression.Eq("Id",customerId));回归暴击。唯一结果();像那样的东西。以上就是C#学习教程:使用Nhibernate过滤AggregateRoot返回的子集合共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
