У меня есть запрос SQL, как показано ниже:Как я могу генерировать NHibernate запрос с использованием критериев для следующего SQL запроса
SELECT *
FROM USER R
INNER JOIN userdepartment C
ON R.id = C.userid
INNER JOIN userdepartment K
ON C.userid = K.userid
WHERE C.departmentid = 155
AND K.departmentid = 157
пользователя и Департамент имеют много-ко-многим и поддерживать отношения, у меня есть UserDepartment Таблица. Теперь я хочу получить только тех пользователей, у которых есть оба отдела с идентификаторами 155 и 177. Вышеупомянутый запрос делает то, что я хочу.
Теперь я хочу преобразовать вышеуказанный запрос в запрос Nhibernate. Я использую критерии для генерации запросов. Я пробовал следующее:
var criteria = Session.CreateCriteria<User>();
var subcriteria = criteria
.CreateCriteria("UserDepartments","a", JoinType.InnerJoin);
subcriteria = subcriteria
.CreateCriteria("UserDepartments", "b", JoinType.InnerJoin);
var conjunction = Restrictions.Conjunction();
conjunction.Add(Restrictions.Eq("DepartmentId", 155));
conjunction.Add(Restrictions.Eq("DepartmentId", 177));
subCriteria.Add(conjunction);
Но это не работает. Пожалуйста, помогите мне с тем же. Заранее спасибо за вашу помощь.
Вы должны определить отношение в своей конфигурации, а не пытаться воссоздать его в своем запросе –
@PanagiotisKanavos Спасибо за ваш ответ. Я попытаюсь определить отношение –