You could maybe increase the isolation level on the transaction?
 On 15 Sep 2011 07:57, "Jørn Schou-Rode" <[email protected]> wrote:
> I am not sure if we are using the unit-of-work pattern "properly". We
> have a web application, and our DI container is wired up to allow one
> session per HTTP request. Thus, each session is used for all queries
> related to rendering a single response. If "if not exists insert"
> routine happens somewhere in the "middle" of the request handling,
> code-wise far from where the DI system would commit the session.
>
> Will we need a different architecture where sessions are more local in
> order to handle the unique-key violation as an exception?
>
> /Jørn
>
> On Sep 15, 3:33 am, Joseph Daigle <[email protected]> wrote:
>> If you're using the unit-of-work pattern properly, then you could handle
the
>> unique-key violation as an exception and then retry your unit-of-work. On
>> the retry the row now exists and your code would (assuming no other
>> problems) execute cleanly.
>>
>> As an example: we've made this easy because we do our work by handling
>> messages read from a queue. Each message read represents a unit-of-work.
If
>> it throws an exception, we put the message back on the queue to try again
>> later. (There is some other infrastructure level stuff to detect poison
>> messages, etc., but that's not important for this discussion).
>>
>> If you can't retry, you're going to have to implement some sort of lock
>> somewhere.
>>
>> --
>> Joseph Daigle
>
> --
> 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