and what happen with the transactionFactory ? 2009/10/7 Ayende Rahien <[email protected]>
> 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 >> > > -- Fabio Maulo
