NHibernate 3 QueryOver один ко многим - PullRequest
       0

NHibernate 3 QueryOver один ко многим

4 голосов
/ 22 сентября 2011

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