我正在查询Foo
。 Foo
没有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>();
处写什么?
答案 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>();