nhibernate запрашивает коллекцию - PullRequest
1 голос
/ 16 июня 2011

Представьте себе структуру базы данных, в которой у вас есть Class и Student, а у ученика есть один класс, и наоборот, в классе много учеников.

Как поступить в Nhibernate для созданиязапрос (предпочтительно QueryOver или Criteria API) для следующего.

Select ANY class which contains BOTH StudentA and StudentB.

Если бы это был дизъюнкция (ИЛИ), я мог бы сделать это, указав

List<Student> studentRestrictionList = new List<Student>();
studentRestrictionList.Add(studentA);
studentRestrictionList.Add(studentB);
Student studentAlias = null;
var q = session.QueryOver<Class>();
q.Left.JoinAlias(item => item.Students, () => studentsAlias);
q.WhereRestrictionOn(() => studentsAlias.ID)IsInG(studentRestrictionList);

Проблеманачинается, когда мне нужно сделать соединение (И).

Есть идеи?

1 Ответ

0 голосов
/ 16 июня 2011

Чтобы получить соединение, я бы создал отдельный объект соединения и прикрепил бы его к критериям (опять же, не проверял, но должен привести вас на правильный путь):

var q = DetachedCriteria.For<Class>()
 .CreateCriteria("this.Students", "student");

var con = new Conjunction();
foreach(var s in studentList)
{
 con.Add(Restrictions.Eq("student.Id", s.Id));
}

q.Add(con);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...