0
這段代碼可以使一些不好的事情?我在一個項目中發現它,並不知道它是否可能導致一些瘋狂的錯誤(死鎖,數據庫超時...)。這樣的代碼即使在線程中也可以在程序中多次執行。NHibernate新會話與現有交易中的交易
非常感謝
class first {
void doSomething {
using (ITransaction transaction = session.BeginTransaction){
var foo = new second();
foo.doInNewTransaction(); //inner transaction in new session
transaction.Commit();
}
}
}
class second {
void doInNewTransaction(){
using (Session session = new Session()){
using (ITransaction transaction = session.BeginTransaction){
//do someting in database
transaction.Commit();
}
}
}
}
你的代碼目前沒有做壞事,但你可以添加代碼。你不能用代碼構造來阻止'壞東西',只能通過開發者知道他們在做什麼。 – Peter
當然,我需要知道這種做法是否總體上不好 - 我的意思是......在現有交易中打開新會話和交易 – Cicik