Thanks, that was the point :)
On 28 oct, 17:21, Oskar Berggren <[email protected]> wrote: > This is a guess, but doesn't .Enumerable<Strategy>() delay the > (complete) execution until the enumeration is actually enumerated? > This would then happen after the transaction is closed. > > /Oskar > > 2010/10/28 Michael Delva <[email protected]>: > > > > > > > > > Hello all, > > > I've just changed the implementations of the methods of my > > repositories to encapsulate them all in a transaction: > > > public class Repository<TEntity> : IRepository<TEntity> > > where TEntity : BaseEntity<TEntity> > > { > > public Repository(ISession session) > > { > > Session = session; > > } > > > public ISession Session { get; set; } > > > private static Type ConcreteType { get { return > > typeof(TEntity); } } > > > protected TResult Transact<TResult>(Func<TResult> func) > > { > > if (!Session.Transaction.IsActive) > > { > > // Wrap in transaction > > TResult result; > > > using (var tx = Session.BeginTransaction()) > > { > > result = func.Invoke(); > > tx.Commit(); > > } > > return result; > > } > > // Don't wrap; > > return func.Invoke(); > > } > > > protected void Transact(Action action) > > { > > Transact(() => > > { > > action.Invoke(); > > return false; > > }); > > } > > } > > > I use this like that: > > > public IEnumerable<Strategy> AllStrategiesSortedByName(StrategyType > > type) > > { > > return Transact(() => Session.CreateQuery("from Strategy s where > > s.Type = :strategyType order by s.Name") > > .SetParameter("strategyType", type) > > .Enumerable<Strategy>()); > > } > > > With the above query, I have this exception: > > > NHibernate.TransactionException: Commit failed with SQL exception > > > InnerException : System.Data.SQLite.SQLiteException: SQLite error - > > cannot commit transaction - SQL statements in progress > > > If I remove the transaction, all runs fine. If I replace the HQL query > > with a QueryOver query, it works fine too. > > > Would you have any ideas? > > > Thanks in advance > > > Mike > > > -- > > 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 > > athttp://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.
