我正在使用nhibernate和nhibernate個人資料不斷拋出此警報。如何在事務中包裝延遲加載?
Use of implicit transactions is discouraged"
我實際上是通過ninject
public class NhibernateModule : NinjectModule
{
public override void Load()
{
Bind<ISessionFactory>().ToProvider<NhibernateSessionFactoryProvider>().InSingletonScope();
Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()).InRequestScope()
.OnActivation(StartTransaction)
.OnDeactivation(CommitTransaction);
}
public void CommitTransaction(ISession session)
{
if (session.Transaction.IsActive)
{
session.Transaction.Commit();
}
}
public void StartTransaction(ISession session)
{
if (!session.Transaction.IsActive)
{
session.BeginTransaction();
}
}
}
包裹在一個事務一切,所以這應該在一個事務中包裹的一切,似乎與任何不懶加載工作。
如果是延遲加載,但我得到的錯誤。我究竟做錯了什麼。
當你說「錯誤」,你的意思是「隱式交易不鼓勵」? – 2011-06-05 20:42:39
@Merlyn Morgan-Graham - 是的,這是我得到的錯誤,因爲由於某種原因,當我通過延遲加載調用它時,它不會將我的語句包裝在事務中。 – chobo2 2011-06-05 20:47:43
此博客帖子(評論部分)似乎告訴我,交易對延遲加載沒有意義 - http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is -discouraged – 2011-06-06 00:08:09