nHibernate запрос с таблицей ссылок - PullRequest
2 голосов
/ 11 марта 2010

У меня проблема с беглым-nhibernate и критериями.

У меня есть следующие настройки.

class AMap : ClassMap<A>
{
   Id(x => x.Id);
   ...
   HasMany<Connection>(x => x.Connection).Inverse().ReadOnly();
}

class BMap : ClassMap<B>
{
   Id(x => x.Id);
   ...
   HasMany<Connection>(x => x.Connection).Inverse().ReadOnly();
}

class CMap : ClassMap<C>
{
   Id(x => x.Id);
   ...
   HasMany<Connection>(x => x.Connection).Inverse().ReadOnly();
}

class ConnectionMap : ClassMap<Connection>
{
   References(x => x.A);
   References(x => x.B);
   References(x => x.C);
}

Класс Connection - это представление в базе данных, в котором есть некоторая логика, которая здесь не так важна.

Но когда я пытаюсь сделать следующее

session.CreateCriteria<A>()
      .CreateAlias("Connection", "c")
      .CreateAlias("c.B", "b")
      .Add(Expression.Eq("b.Id", 55))
      .List<A>() as List<A>;

Nhibernate начинается с выбора

select this_.Id as y0_,
       ...(more A properties)
       b.Id as b0_,
       ...(more B properties)
       c.AId as c0_,
       c.BId as c1_,
       c.Cid as c2_
from A this_ inner join 
Connection c on this_.Id = c.A.Id
inner join c.B b on b.Id = c.B.Id
where b.Id = 55

что я и хочу. Но после этого выбор продолжается, выбирая другие объекты, на которые ссылается Connection "c".

Есть ли способ сказать nHibernate не включать столбцы с в результат (без проекции)? Или я должен использовать hql для этого запроса?

...