Hi,

We are using Automatic flush mode, but it is very explicitly and precisely
not flushing when we query. The code example I posted in my previous post
is factually correct, the second line (i.e. query) will/does throw an
exception.

Cannot viably use Get()/Load() because the Query is composed further up the
chain, thus the Law of Demeter kicks in and well.. it's pretty ugly for the
domain to know what is and isn't a concern of the DB anyway. :)

Though I must ask.. why implement a Cache if it is not going to be
Queryable?

Regards,
John.

On Tue, Apr 10, 2012 at 2:40 PM, Oskar Berggren <[email protected]>wrote:

> >> > 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.
>
>

-- 
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.

Reply via email to