You might want to test this on sqlserver or oracle with MTS services
installed, as mysql doesn't support distributed transasctions as far as I
know
FB
> So I went and tested it, but mixing TransactionScope and NH transaction
got
> NH complaining:
>
> NHibernate.TransactionException : Begin failed with SQL exception
> ----> System.InvalidOperationException : Nested transactions are not
> supported.
>
> NHibernate.Transaction.AdoTransaction - Begin transaction failed
> System.InvalidOperationException: Nested transactions are not supported.
> at
MySql.Data.MySqlClient.MySqlConnection.BeginTransaction(IsolationLevel
> iso)
> at
> MySql.Data.MySqlClient.MySqlConnection.BeginDbTransaction(IsolationLevel
> isolationLevel)
> at
>
System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction()
> at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel
> isolationLevel) in
> d:\CSharp\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line
> 130
>
>
> Here's my code:
>
> using (var transactionScope = new TransactionScope()) using (var session =
> sessionFactory.OpenSession()) using (var tx = session.BeginTransaction())
//
> throws exception when calling BeginTransaction() { }
>
>
> On Wed, Aug 18, 2010 at 3:40 PM, Frans Bouma <[email protected]> wrote:
>
>
> > I always commit the NH transaction. I'm not sure. Try it and see.
>
>
> Inside a transaction scope, all db transaction using objects
> subscribe to a 'manager' which tells the transaction scope how the
> outcome
> of their db transaction turned out: rollback or commit. When you
> commit a db
> transaction (through an nh transaction) it should vote for 'commit'
> at the
> controlling transaction scope.
>
> At transactionscope complete, all controlled transactions'
> votes are
> checked and if one wants to rollback, everything is rolled back or
> committed. This is done by calling the subscribed managers that the
> transactions can be committed or have to be rolled back. At that
> moment NH's
> code gets a call to commit or rollback. So if you call it
beforehand,
> it
> simply should vote for commit and do nothing else but wait for the
> scope's
> final 'judgment' ;)
>
> FB
>
>
> > On Wed, Aug 18, 2010 at 6:59 AM, Jacob Madsen <[email protected]>
> wrote:
> >
> >
> > "session.Transaction.Commit()" is invoked by the NH
> internals, when
> > transactionScope.Complete() is invoked, right?
> >
> >
> > On Wed, Aug 18, 2010 at 1:56 PM, Jacob Madsen
> <[email protected]>
> wrote:
> >
> >
> > Ahh.. great details!
> >
> > On Wed, Aug 18, 2010 at 1:53 PM, Fabio Maulo
> > <[email protected]> wrote:
> >
> >
> > First of all thanks to avoid the annoying
> discussion
> > about "I don't want use NH's transaction" and try it as I said
you.
> >
> > In releasenote.txt under
> > ** BREAKING CHANGES from NH1.2.1GA to
NH2.0.0
> > you can find this
> > * AutoFlush will not occur outside a
> transaction -
> > Database transactions are never optional, all communication with
> the
> > database must occur inside a transaction, whatever you read or
> write data.
> >
> > The NH's transaction is, sorry to be
> redundant, the
> > NH's transaction. You have to use it because NH need it to take in
> account
> > all operations under NH responsibility (it include cache, UoW and
> > transactionscope).
> >
> > Because NH's transaction is not 1:1 with
> DB-transaction
> > the TransactionScope is not a substitute of NH's transaction.
> >
> > On Wed, Aug 18, 2010 at 8:37 AM, Jacob
Madsen
> > <[email protected]> wrote:
> >
> >
> > Love the feature :-)
> >
> > Why do you also begin a nhibernate
> transaction?
> >
> >
> >
> >
> > On Wed, Aug 18, 2010 at 1:08 PM,
> Fabio Maulo
> > <[email protected]> wrote:
> >
> >
> >
> > using(var transactionScope =
> new
> > TransactionScope())
> > using(var session =
> > sessionFactory.OpenSession())
> > using(var tx =
> > session.BeginTransaction())
> > {
> > var someEntity =
> > session.Get<SomeEntityType>(someId);
> >
> > someEntity.Name = "bla";
> > ....
> >
transactionScope.Complete();
> >
> >
> > NH will use autodirty check
> >
> >
> >
> > On Wed, Aug 18, 2010 at 7:53
> AM,
> Jacob
> > Madsen <[email protected]> wrote:
> >
> >
> > So I do not need to
> make an
> > explicit Update(someEntity) call?
> >
> > using(var
> transactionScope =
> new
> > TransactionScope())
> > using(var session =
> > sessionFactory.OpenSession())
> > {
> > var someEntity =
> > session.Get<SomeEntityType>(someId);
> >
> > someEntity.Name =
> "bla";
> >
> >
> session.Update(someEntity); // I
> > want to avoid these explicit Update-calls by tracking the (dirty)
> entities
> > in a session and do a single call to a "void SaveChanges()"
method.
> The
> > "SaveChanges" method should do the updating on the entities in a
> session.
> I
> > still want to explicitly insert new entities with
> session.Save(newEntity),
> > which I abstract and in a method called "Store".
> >
> >
> transactionScope.Complete();
> > }
> >
> >
> > On Tue, Aug 17, 2010
> at
> 10:30 AM,
> > Dwarrel <[email protected]> wrote:
> >
> >
> > Yes, you
> would not
> want to
> > use it for that reason, flush will do that
> >
> automatically.
> Unfortunately
> > I do sometimes crave for a way to see
> > which
objects
> are in
> the
> > session. Sometimes I would want to evict all
> > objects of a
> certain
> type
> > from the session cache. This if you have a
> > longer
> running
> session and
> > someone else has updated the DB values.
> > There is no
> known
> way of
> > evicting say all purchase info and then re-
> > run a query
> to load
> the
> > relevant ones. If you don't evict them then
> > you get a
> strange
> mix of
> > stale and current information as your query
> > result (even
> when
> having the
> > version number available!)
> >
> >
> > On Aug 16,
> 3:33 pm,
> Jason
> > Dentler <[email protected]> wrote:
> > > Automatic
> dirty
> checking
> > will take care of this when the session is flushed
> > > (which
> normally
> happens
> > when you commit a transaction)
> > >
> > >
> > >
> >
> > > On Mon,
Aug
> 16,
> 2010 at
> > 4:27 AM, Jacob Madsen <[email protected]> wrote:
> > > > Hi all,
> > >
> > > > Is there
> a
> method to
> > retrieve references to all entities known by a
> > > > session
> > >
> > > > using
> (var
> session =
> > sessionFactory.OpenSession())
> > > > {
> > > > var
> entity =
> > session.Get<SomeType>(someId); // "entity" is now
> > > > known by
> the
> session
> > > > ....
> > > > var
> allKnownEntities
> > = /* here I want to retrieve all entities
> > > >
> known/attached
> to a
> > session */
> > > > ....
> > > > }
> > >
> > > > I want
to
> implement a
> > "void SaveChanges()" method that will Update all
> > > > modified
> entities known
> > by a session.
> > >
> > > > Cheers!
> > >
> > > > --
> > > > 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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[email protected]> >
> > <nhusers%[email protected]
> <mailto:nhusers%[email protected]>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[email protected]> > ->
>
> >
> > > > .
> > > > For more
> options, visit
> > this group at
> >
> > >
> > >http://groups.google.com/group/nhusers?hl=en.- Hide quoted text -
> > >
> > > - Show
> quoted text
> -
> >
> > --
> >
> > 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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[email protected]> > .
>
> > For more options,
> visit this
> group
> > at http://groups.google.com/group/nhusers?hl=en.
> >
> >
> >
> >
> >
>
> > --
>
> > Fabio Maulo
> >
> >
> >
> >
> >
> > --
> >
> > 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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[email protected]> > .
>
> > For more options, visit this group
at
> > http://groups.google.com/group/nhusers?hl=en.
> >
> >
> >
> >
> >
>
> > --
>
> > Fabio Maulo
> >
> >
> >
> >
> >
> > --
> > 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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[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]
> <mailto:nhusers%[email protected]>
>
> > <mailto:nhusers%[email protected]
> <mailto:nhusers%[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]
> <mailto:nhusers%[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]
> <mailto:nhusers%[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.