[英]NHibernate: Multiple Transactions on a single session
我想通過在單個會話上創建多個事務來了解是否存在任何問題,如下所示:
using (var session = factory.OpenSession())
{
using (var trans1 = session.BeginTransaction())
{
.....
trans1.commit();
}
using (var trans2 = session.BeginTransaction())
{
.....
trans2.commit();
}
using (var trans3 = session.BeginTransaction())
{
.....
trans3.commit();
}
using (var trans = session.BeginTransaction())
{
.....
// trans1.commit();
}
}
有可能嗎?是否必須為每個事務打開一個新的會話對象?
謝謝你的幫助。
是的,您所做的一切都很好。
nhibernate不支持多個嵌套事務。
即使在NHibernate中,在單個會話上進行多個事務也並不常見。 同樣根據個人經驗,我可以說在任何其他情況下重用會話不是一個好主意。
我建議保持工作流程盡可能簡單,以避免任何副作用:
Web環境中最常見的策略是每個請求都具有會話。
當涉及事務時,實際上取決於您的用例。
您正在執行的操作很好,否則nhibernate不會將會話與事務分開。
但同樣,這取決於您的業務案例情況。
我建議您使用IDisposable
包裝session.BeginTransaction()
,因此在Dispose
請確保提交transaction。
沒問題,盡管很不尋常。 請記住,如果任何事務回滾,則應丟棄該會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.