Прежде чем спрашивать, я смотрел на все соответствующие посты по этой темеNHibernate многие-ко-многим запрос с использованием Criteria API
Я также прочитал этот блог: http://ayende.com/Blog/archive/2007/12/23/NHiberante-Querying-Many-To-Many-associations-using-the-Criteria-API.aspx
У меня есть команды и у меня есть члены, есть много-ко-многим между ними
в основном: Член -> MemberTeam < - Team
с моим запросом я стараюсь, чтобы получить все элементы, которые принадлежат к одной команде запрошены членом (включая запрашиваемых члена)
Я создал свои таблицы, используя следующие FluentHibernate:
TeamMap код:
Id(x => x.ID).GeneratedBy.GuidComb().UnsavedValue("00000000-0000-0000-0000-000000000000");
HasManyToMany(x => x.Members)
.Table("MemberTeam")
.ChildKeyColumn("TeamID")
.ParentKeyColumn("MemberID");
MemberMap код:
Id(x => x.ID).GeneratedBy.GuidComb().UnsavedValue("00000000-0000-0000-0000-000000000000");
HasManyToMany(x => x.Teams)
.Table("MemberTeam")
.ChildKeyColumn("MemberID")
.ParentKeyColumn("TeamID");
код я делаю запрос с является:
DetachedCriteria dCriteria = DetachedCriteria.For(typeof(Team), "team")
.SetProjection(Projections.Id())
.Add(Property.ForName("team.ID").EqProperty("mt.ID"));
ICriteria criteria = Session.CreateCriteria(typeof (Member), "member")
.CreateAlias("Teams", "mt")
.Add(Subqueries.Exists(dCriteria))
.Add(Restrictions.Eq("mt.MemberID", new Guid(memberID)));
IList<Member> list = criteria.List<Member>();
Я знаю, что я делаю что-то неправильно, но я не могу понять, что это его
Любая помощь будет оценена
Большое спасибо!
P.S. Мои швы карт будут в порядке, я могу сохранить объекты просто отлично!
Спасибо ... Поразмыслив часами, я получил тот же ответ :) –