У меня проблема с Linq для Nhibernate, создающего запросы с внешними объединениями.
Например:
return Session.Linq<ClientContact>().Where(c => c.Client.Id = 13).ToList();
Создает запрос, подобный:
SELECT...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid(+)
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13
Обратите внимание на внешнее соединение. clientid = client1 .clientid (+).Boo!
Чтобы устранить проблему, я вернулся к использованию Session.CreateCriteria.
return Session.CreateCriteria(typeof (ClientContact)).Add(Restrictions.Eq("Client.Id", clientId)).List<ClientContact>();
Создает следующий запрос:
SELECT...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13
Обратите внимание, что нет внешнего соединения. clientid = client1 .clientid.Ууу!
Кто-нибудь знает, почему это происходит?