ОК, поэтому я не могу найти хороший пример этого, чтобы я мог лучше понять, как использовать отдельные критерии (предполагая, что это то, что я хочу использовать в первую очередь).
У меня есть 2 таблицы.Placement и PlacementSupervisor
Моя таблица PlacementSupervisor имеет FK of PlacementID, который относится к Placement.PlaceID - хотя мой класс модели nhibernate имеет PlacementSupervisor.Место размещения (а не конкретное указание свойства идентификатора места размещения - не уверен, важно ли это).
Я пытаюсь сделать следующее: если передаются значения для идентификатора супервизора, я хочу ограничить места размещения этимидентификатор супервизора.
Пытались:
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 и sup.supervisorTypeId = U)
Во-первых, supervisorTypeId - это строка.Во-вторых, я не понимаю, как добиться того, что я пытаюсь сделать, поэтому просто пробовал различные комбинации проекций, а также псевдонимов свойств и опций подзапросов… поскольку я не понимаю, как я должен присоединиться к другой таблице/ entity, когда клавиша FK находится во второй таблице.
Может ли кто-нибудь указать мне правильное направление.С точки зрения данных это кажется таким легким делом, что, надеюсь, я просто упускаю что-то очевидное !!