NHibernate 3 一对多查询
我有这个 nhibernate 查询
var session = SessionFactory.GetCurrentSession();
var users = session.QueryOver<User>()
.Where(u => u.Enabled)
.WhereRestrictionOn(u=>u.Orders).IsNull
.Inner.JoinQueryOver<Foo>(a => a.Foos).Where(c => c.Enabled)
.Inner.JoinQueryOver<Bar>(m => m.Bars).Where(m => m.Enabled)
.TransformUsing(new DistinctRootEntityResultTransformer())
.List();
WhereRestrictionOn Orders 不起作用
,但我试图确保这些用户的订单为零,但有 Foos 和 Bars
任何人都可以帮助在 NHibernate 中实现这一点吗?
更新:
这是迄今为止我如何改变的 - 似乎有效
var session = SessionFactory.GetCurrentSession();
User rawUser = null;
var existing = QueryOver.Of<Order>().Where(x => x.UserID == rawUser.UserID).Select(x=>x.User);
var users = session.QueryOver<User>(() => rawUser)
.Where(u => u.Enabled)
.WithSubquery.WhereNotExists(existing)
.Inner.JoinQueryOver<Foo>(a => a.Foos).Where(c => c.Enabled)
.Inner.JoinQueryOver<Bar>(m => m.Bars).Where(m => m.Enabled)
.TransformUsing(new DistinctRootEntityResultTransformer())
.List();
I have this nhibernate query
var session = SessionFactory.GetCurrentSession();
var users = session.QueryOver<User>()
.Where(u => u.Enabled)
.WhereRestrictionOn(u=>u.Orders).IsNull
.Inner.JoinQueryOver<Foo>(a => a.Foos).Where(c => c.Enabled)
.Inner.JoinQueryOver<Bar>(m => m.Bars).Where(m => m.Enabled)
.TransformUsing(new DistinctRootEntityResultTransformer())
.List();
WhereRestrictionOn Orders doesn't work
but I am trying to ensure these users have zero orders but have Foos and Bars
Can anyone help with a way to do it in NHibernate?
Update:
Here is how I changed this so far - seems to work
var session = SessionFactory.GetCurrentSession();
User rawUser = null;
var existing = QueryOver.Of<Order>().Where(x => x.UserID == rawUser.UserID).Select(x=>x.User);
var users = session.QueryOver<User>(() => rawUser)
.Where(u => u.Enabled)
.WithSubquery.WhereNotExists(existing)
.Inner.JoinQueryOver<Foo>(a => a.Foos).Where(c => c.Enabled)
.Inner.JoinQueryOver<Bar>(m => m.Bars).Where(m => m.Enabled)
.TransformUsing(new DistinctRootEntityResultTransformer())
.List();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论