我有桌面应用程序和Web应用程序引用的常见dll。其中一个方法创建了3个对象,并将它们插入到事务中的DB中。
但是,当我从Web应用程序和桌面应用程序同时调用此方法时,3by3不会插入对象...它们的顺序是混合的(1来自桌面应用程序,后来是1来自Web应用程序等)。
我的代码是否正常?是否与映射或nhibernate cfg有关? 非常感谢你提前。
Notifications not = new Notifications();
not.Notes = applicationName;
not.GeneratedTime = DateTime.Now;
using (var session = SessionManager.OpenSession())
using (var transaction = session.BeginTransaction())
{
// do what you need to do with the session
session.Save(not);
not = new Notifications();
not.Notes = applicationName;
not.GeneratedTime = DateTime.Now;
session.Save(not);
not = new Notifications();
not.Notes = applicationName;
not.GeneratedTime = DateTime.Now;
// do what you need to do with the session
session.Save(not);
transaction.Commit();
}
答案 0 :(得分:1)
您错误地认为在一个事务中执行插入会阻止在其他并发事务中发生插入。
这是不正确的(除非你使用一些特定的事务隔离级别,专门锁定整个表等等......但是我们只是说这不是真的)