NHibernate:反向存在标准

时间:2012-06-25 14:38:15

标签: sql nhibernate nhibernate-criteria queryover

我正在查询FooFoo没有IList<FooBar>属性(不幸的是)。 FooBar有一个Foo属性(但不是Bar),Bar有一个IList<FooBar>。我需要存在Foo的{​​{1}}所有FooBar,其中Bar的{​​{1}}字段与今天相等Bar

我不是Criteria API的专业人士,但不是我选择使用它。


修改:我尝试使用Date API进行了同样的操作,并且做到了这一点:

QueryOver

我在 var q1 = session.QueryOver<Foo>() .WithSubquery.WhereExists<Bar>( session.QueryOver<Bar>() .Where(b => b.Date == DateTime.Today) .JoinQueryOver<FooBar>(b => b.FooBars) .Where(fb => fb.Foo == /*???*/ )) .List<Foo>(); 处写什么?

1 个答案:

答案 0 :(得分:1)

早期免责声明 - 我现在没有安装NHibernate,所以这是未经测试的,但我会用这样的方法来处理它:

var foos = session.CreateCriteria<Bar>("bar")
                      .CreateCriteria("FooBars", "foobar")
                      .Add(
                         Restrictions.Eq(
                            "bar.Date", 
                            DateTime.Today.ToString("d", CultureInfo.InvariantCulture)
                         ))
                      .SetProjection(Projections.Property("foobar.Foo"))
                      .List<Foo>();