有这样的类结构
Permit -> Financial ->ICollection instrumentList
Instrument -> Agency
也就是说,Permit 实例包含 Financial
实例 Financial 实例包含 Instrument 对象集合 Instrument
实例包含 Agency
使用 NHibernate Critieria,我想获取带有某种类型机构的工具的许可证列表
此代码获取所有带有财务信息的许可证(可能是许可证没有财务信息的情况,在这种情况下我没有'不需要它)
// get all all Permits with Financial info
var financialCriteria = DetachedCriteria.For<Financial>()
.SetProjection(Projections.Property("Permit.Id")); // Permit.Id in Select
queryCriteria.Add(Subqueries.PropertyIn("Id", financialCriteria)); // Permit.Id in Select
然后我想将该列表限制为类型 2 和 3 的代理:
// then restrict to certain Agency types
var instrumentCriteria = DetachedCriteria.For<Instrument>()
.SetProjection(Projections.Property("Id")) // Instrument.Id in Select
.Add(Restrictions.In("Agency", new object[] { 2, 3})); // Where
queryCriteria.Add(Subqueries.PropertyIn("Id", instrumentCriteria)); //
但是,当使用第二块代码运行时,当我知道有 2 和 3 时,我会返回一个空列表。
我做错了什么?