У меня есть этот запрос 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();