Guys, just a last question about nhibernate querying/fetching. When we use Linq to NHibernate, there are methods to solve the problem: Fetch and ThenFetch. For sample:
var list= session.Query<Product>().Fetch(x => x.Category).ToList(); These methods generate a *LEFT OUTER JOIN* for each relation. Is it the default behaviour? Or is there any way to tell to linq when use *LEFT *or *INNER* join? I know in QueryOver we can use Left / Inner / Right, but we have complex queries with Linq. Thank you. On Wed, Mar 15, 2017 at 1:41 PM, Felipe Oriani <[email protected]> wrote: > Yes, I know I can use Select method to make a projection what I want, I > ask about something more simple. > > Thank you. > > On Wed, Mar 15, 2017 at 12:34 PM, Ricardo Peres <[email protected]> wrote: > >> Sorry, "You can". >> >> RP >> >> >> On Wednesday, March 15, 2017 at 3:34:41 PM UTC, Ricardo Peres wrote: >>> >>> Use can, obviously, use projections and only fetch the properties you >>> are interested in. Something like; >>> >>> var products = Session.Query<Product>().Select(p => new { >>> p.Id, CategoryName = p.Category.Name <http://p.category.name/> >>> }).ToList(); >>> >>> >>> >>> On Wednesday, March 15, 2017 at 12:35:16 PM UTC, Felipe Oriani wrote: >>>> >>>> Hey guys, I am looking at the problem for "select n+1" queries. It >>>> scare us when I a session with more than 10 queries more than 100 in some >>>> cases haha). Some refactoring to do. >>>> >>>> Sometimes I just need a string property to fill a column on the grid >>>> and using `Fetch` extension method NHibernate fill the entire entity on the >>>> relation.* Is there any way to tell to NHibernate fill up just a >>>> column I need, without using the `Select` (from Linq) or `SelectLitst` >>>> (from QueryOver)?* Something like this: >>>> >>>> var products = Session.Query<Product>().FetchProperty(p => >>>> p.Category.Name).ToList(); >>>> >>>> @Nestor, these cases are not huge tables. it will not pass more than >>>> 1000 records and some filters applied. >>>> >>>> Thank you Guys >>>> >>>> >>>> On Wed, Mar 15, 2017 at 5:15 AM, Nestor Andres Rodriguez < >>>> [email protected]> wrote: >>>> >>>>> Hi Felipe, >>>>> >>>>> Joins may be expensive. But what is really important prior to any >>>>> optimization is to know how the data in this query behaves (reads, >>>>> writes), >>>>> how often this query will be executed, how important is this query for the >>>>> business and customers, would it be a problem if it takes a few minutes , >>>>> how up-to-date should be the information, seconds, minutes, hours. >>>>> >>>>> If this query needs for example to be executed in few milliseconds, >>>>> and you have million of records on each of the 6 tables then probably you >>>>> would like to avoid calculating the joins every time, so you may create a >>>>> denormalised table which is updated regularly using some triggering >>>>> mechanism, the downside is that you have to maintain yet another table and >>>>> a trigger mechanism. >>>>> >>>>> At the end everything has a cost, and you need to identify if it worth >>>>> it. If nobody complains and you do not see a good reason to optimize it, >>>>> just do not care about that. >>>>> >>>>> Cheers, >>>>> Nestor >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nhusers" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at https://groups.google.com/group/nhusers. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> >>>> -- >>>> ______________________________________ >>>> Felipe B Oriani >>>> [email protected] >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > ______________________________________ > Felipe B Oriani > [email protected] > -- ______________________________________ Felipe B Oriani [email protected] -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
