>> > However, as I understand from a now quite old article[1] on Ayende's >> > blog that this is "not possible" unless we explicity use Get()/Load().
I understand the point of Ayende's article to mainly concern performance. If you know the primary key, the fastest way is Get()/Load(), and you should use them unless there is a good reason not to. Using a query method will bypass the cache and always execute in the database. However, using automatic flush mode, NH can automatically insert the row for the newly saved object when the same table is hit by the query. /Oskar Den 10 april 2012 15:18 skrev John Thornborrow <[email protected]>: > Hi, > > The question is simply: Does the restriction as documented in Ayende's > article in 2009 still exist today? > > I appreciate Querying will hit the DB - but this is a problem introduced by > NH and its Cache (because it will not insert immediately when > ISession.Save() is called.) > > Over-Simplified code to demonstrate point: > > public void Foo(ISession session) { > session.Save(new Client { Id = "123" }); > var client = session.Query<Client>().Single(each => each.Id == "123"); // > InvalidOpException - Sequence does not contain any elements > } > > Regards, > John. > > On Tue, Apr 10, 2012 at 1:31 PM, Oskar Berggren <[email protected]> > wrote: >> >> Not sure if I understand what the question is, but NH is not a query >> execution engine - querying will hit the database. >> >> /Oskar >> >> >> Den 10 april 2012 12:49 skrev John T <[email protected]>: >> > Hi guys, >> > >> > I've hit a problem where we have a case that we are creating an >> > entity, saving it, then Query<T>()ing for it from cache and modifying >> > it. I.e. not flushing in between the initial Save() and Query(). >> > >> > However, as I understand from a now quite old article[1] on Ayende's >> > blog that this is "not possible" unless we explicity use Get()/Load(). >> > >> > Has the situation improved since then, or is the same restriction >> > still in place? >> > >> > Many thanks, >> > John. >> > >> > [1] >> > http://ayende.com/blog/3988/nhibernate-the-difference-between-get-load-and-querying-by-id >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "nhusers" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]. >> > For more options, visit this group at >> > http://groups.google.com/group/nhusers?hl=en. >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
