Waarom Fetch moet de laatste clausule in Linq NHibernate query

stemmen
3

Fetch moet de laatste clausule in Linq gebaseerd op Mike Hadlow's zijn blog post :

Merk op dat als je wilt mixen Fetch met andere clausules, Fetch moet altijd op de laatste komen.

Dus, als Fetch is gewoon met vermelding van de te halen strategie naar een woning waarom ik niet kan krijgen meer clausules na Fetch? H

Een zaak die ik ben geconfronteerd probleem is het gebruik van AsPagination (MVCContrib) met Fetch. Omdat AsPagination probeert om de telling te krijgen op de vraag die Fetch door het toevoegen van .count () tot het einde.

Dus nogmaals waarom de fetch strategie van een woning moet de laatste clausule in een Linq NHibernate opvraaginstructie zijn?

De vraag is gesteld op 28/12/2010 om 23:14
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

Ik liep in het zelfde probleem voordat ik besefte wat er gaande is. http://groups.google.com/group/nhibernate-development/browse_thread/thread/b44957841c9416ba

De meest waarschijnlijke reden is dat het makkelijker was om op deze manier uit te voeren, omdat er geen noodzaak om rekening te houden met mogelijke transformaties (selecteer / groep van) dat kan gebeuren in de query.

NHibernate is altijd moeilijk geweest op het gebied van het creëren van paging vragen wanneer uw entiteiten collecties hebt gekoppeld. Als u Criteria of QueryOver gebruiken, de juiste manier om dit te doen is om de paging-query alleen de id's van de entiteiten terug te keren met een duidelijke projectie hebben. Die ids zou worden gebruikt in de waar de toestand van de subquery die zou bevatten alle joins.

U kunt hier een voorbeeld (het antwoord) te zien:

NHibernate paging criteria met fetchmode gretig. (Gebruik vloeiend NH)

Ik heb nog niet geprobeerd deze techniek in NHibernate LINQ, maar het kan werken.

antwoordde op 28/12/2010 om 23:37
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more