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

Reply via email to