好的,所以我找不到一个很好的例子,所以我可以更好地理解如何使用分离的标准(假设这是我首先想要使用的)。
我有 2 张桌子。安置和安置主管
我的 PlacementSupervisor 表有一个 PlacementID 的 FK,它与 Placement.PlacementID 相关 - 尽管我的休眠模型类有 PlacementSupervisor 。展示位置(而不是专门指定展示位置 ID 的属性 - 不确定这是否重要)。
我想要做的是 - 如果值传递给主管 ID,我想限制具有该主管 ID 的展示位置。
试过:
ICriteria query = m_PlacementRepository.QueryAlias("p")
....
if (criteria.SupervisorId > 0 && !string.IsNullOrEmpty(criteria.SupervisorTypeId))
{
DetachedCriteria entityQuery = DetachedCriteria.For<PlacementSupervisor>("sup")
.Add(Restrictions.And(
Restrictions.Eq("sup.supervisorId", criteria.SupervisorId),
Restrictions.Eq("sup.supervisorTypeId", criteria.SupervisorTypeId)
))
.SetProjection(Projections.ProjectionList()
.AddPropertyAlias("Placement.PlacementId", "PlacementId")
);
query.Add(Subqueries.PropertyIn("p.PlacementId", entityQuery));
}
这只是给了我错误:找不到匹配的标准信息提供者:(sup.supervisorId = 5 and sup.supervisorTypeId = U)
首先 supervisorTypeId 是一个字符串。其次,我不明白如何实现我想要做的,只是尝试了各种投影组合、属性别名和子查询选项……因为我不明白我应该如何加入另一个表/entity 当 FK 键位于第二个表中时。
有人可以指出我正确的方向。从数据的角度来看,这似乎是一件很容易的事情,希望我只是遗漏了一些明显的东西!!