NHibernate 3 QueryOver一对多

时间:2011-09-21 21:00:25

标签: nhibernate queryover

我有这个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订单不起作用

但我正在努力确保这些用户零订单但有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();

0 个答案:

没有答案