I disagree, I think that we should be supporting only a single TX model.If
we are doing DTC we shouldn't need to manage them for NH

On Thu, Oct 8, 2009 at 12:10 AM, Fabio Maulo <[email protected]> wrote:

> It is the same matter of few months ago...I'm using what we (both you and
> me) said is a best practice: enclose each NH action in a NH transaction ;)
>
>
> 2009/10/7 Ayende Rahien <[email protected]>
>
>> yes
>>
>>
>> On Thu, Oct 8, 2009 at 12:05 AM, Fabio Maulo <[email protected]>wrote:
>>
>>> And if you abort the DTC nothing happen to db, right ?
>>>
>>>
>>> 2009/10/7 Ayende Rahien <[email protected]>
>>>
>>>> This works:
>>>>
>>>> using (var tx = new TransactionScope())
>>>>
>>>> using (ISession s = sessions.OpenSession())
>>>>
>>>> using(s.BeginTransaction())
>>>>
>>>> {
>>>>
>>>> s.Get<Person>(id);
>>>>
>>>>
>>>>  new ForceEscalationToDistributedTx();
>>>>
>>>>
>>>>  s.Save(new Person
>>>>
>>>> {
>>>>
>>>> CreatedAt = DateTime.Now
>>>>
>>>> });
>>>>
>>>>
>>>>  s.Transaction.Commit();
>>>>
>>>>  tx.Complete();
>>>>
>>>> }
>>>>
>>>>
>>>> But the reason that it works is that the Commit() will force a flush,
>>>> and then in the DTC commit, we aren't flushing.
>>>>
>>>> The actual issue is that we fail to flush on the DTC commit.
>>>>
>>>> On Wed, Oct 7, 2009 at 11:30 PM, Fabio Maulo <[email protected]>wrote:
>>>>
>>>>> question.does it work if you put a BeginTransaction after the
>>>>> OpenSession ?
>>>>>
>>>>> 2009/10/7 Ayende Rahien <[email protected]>
>>>>>
>>>>> I am trying to figure out why this is failing, but I can't figure it
>>>>>> out (attached is a patch against trunk for this test).
>>>>>> Any ideas?
>>>>>>
>>>>>> [Test]
>>>>>>
>>>>>> public void CanLoadAndSaveWithDtc()
>>>>>>
>>>>>> {
>>>>>>
>>>>>> object id;
>>>>>>
>>>>>> using (ISession s = sessions.OpenSession())
>>>>>>
>>>>>> using(s.BeginTransaction())
>>>>>>
>>>>>> {
>>>>>>
>>>>>> var person = new Person {CreatedAt = DateTime.Now};
>>>>>>
>>>>>> id = s.Save(person);
>>>>>>
>>>>>>
>>>>>>  s.Transaction.Commit();
>>>>>>
>>>>>> }
>>>>>>
>>>>>> using (var tx = new TransactionScope())
>>>>>>
>>>>>> using (ISession s = sessions.OpenSession())
>>>>>>
>>>>>> {
>>>>>>
>>>>>> s.Get<Person>(id);
>>>>>>
>>>>>>
>>>>>>  new ForceEscalationToDistributedTx();
>>>>>>
>>>>>>
>>>>>>  s.Save(new Person
>>>>>>
>>>>>> {
>>>>>>
>>>>>> CreatedAt = DateTime.Now
>>>>>>
>>>>>> });
>>>>>>
>>>>>>  tx.Complete();
>>>>>>
>>>>>> }
>>>>>>
>>>>>>
>>>>>>  using (ISession s = sessions.OpenSession())
>>>>>>
>>>>>> using (s.BeginTransaction())
>>>>>>
>>>>>> {
>>>>>>
>>>>>> s.Delete("from Person");
>>>>>>
>>>>>> s.Transaction.Commit();
>>>>>>
>>>>>> }
>>>>>>
>>>>>>
>>>>>> }
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Fabio Maulo
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>
>>
>
>
> --
> Fabio Maulo
>

Reply via email to