Dan,

I hit this a few times working against a legacy database. The solution that
was easy enough for me was to add a Version column to the db table, which
nHibernate could then use to differentitate (as Paco suggested). All pretty
straightforward.

James

2009/4/1 DannyT <[email protected]>

> Thanks Paco, that's definitely something I need to spend some more time
> reading up on.
>
> For now, the approach we've taken is to simply use an unmapped property
> which is set on the client application which flags whether it is a new
> object or not then simply call session.Save(myObject) or
> session.SaveOrUpdate(myObject) dependant on the flag.
>
> This feels a little dirty but was very easy to implement and seems to do
> the job for now. I will definitely look more into the optimistic concurrency
> you've linked to however as it is very much of interest.
>
> Thanks for your help on this and if you (or anyone) have any other useful
> resources i'd be very interested.
>
> Cheers,
>
> Dan
>
>
> 2009/4/1 Paco Wensveen <[email protected]>
>
>> You can read about it in the docs here:
>>
>> http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/mapping.html#mapping-declaration-version
>> and here:
>>
>> http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/transactions.html#transactions-optimistic
>>  There might be other solutions for your problem, or you might not want
>> to do this, but a nice side effect of optimistic concurrency with versioning
>> is that nhibernate can distinct saved and unsaved entities by the version
>> number.
>>  On Wed, Apr 1, 2009 at 2:33 PM, DannyT <[email protected]> wrote:
>>
>>> Thanks for that, I've just been looking at this in the docs, could you
>>> clarify that this means I need to add a version column to my table and a
>>> Version property to my entity?
>>>
>>> 2009/4/1 Paco Wensveen <[email protected]>
>>>
>>>> You can use a "version" int property if you also want optimistic
>>>> concurrency
>>>>
>>>>
>>>> On 4/1/09, DannyT <[email protected]> wrote:
>>>>>
>>>>> We're using GUIDs as our identifier, however our entities may be
>>>>> created on the server (which we rely on NH to sort out the IDs for) or
>>>>> within a client application which will generate and assign the ID.
>>>>>
>>>>> Currently when trying to save an entity generated from the client app
>>>>> which will have a GUID but will not already exist in the NH db I get the
>>>>> error:
>>>>>
>>>>> NHibernate.StaleStateException: Unexpected row count: 0; expected: 1
>>>>>
>>>>> Should NH not detect the entity doesn't already exist in the database,
>>>>> despite the fact it has an ID and insert it? Otherwise what else should we
>>>>> be doing to allow for this?
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> http://danny-t.co.uk
>>>
>>>
>>>
>
>
> --
> http://danny-t.co.uk
>
> >
>


-- 
James Crowley
Managing Director
Developer Fusion - Connecting developers worldwide

Developer Fusion Ltd | 58 Sandringham Close | Enfield, EN1 3JH
mob: 07986 624128 web: http://www.developerfusion.com/

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