Why Linq to Nhibernate creates an outer join

I have a problem with Linq to Nhibernate producing queries with external joins.

For instance:

return Session.Linq<ClientContact>().Where(c => c.Client.Id = 13).ToList();

Produces a query similar to:

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

Note the external connection this.clientid = client1.clientid (+). Boo!

To solve the problem, I returned to using Session.CreateCriteria.

return Session.CreateCriteria(typeof (ClientContact)).Add(Restrictions.Eq("Client.Id", clientId)).List<ClientContact>();

It produces the following query:

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

Pay attention to the external connection this.clientid = client1.clientid. Hooray!

Does anyone know why this is happening?

+3
source share
1 answer

SQL Server, , -- not-null="true" Not.Nullable() Fluent NH , Get . ClientContact.

0

Source: https://habr.com/ru/post/1755784/


All Articles