从一个 NHibernate 会话传输一个对象到另一个会话
Transfer an object from one NHibernate session two another session
已经创建了两个 NHibernate
会话,我创建了一个新的模型对象并在 session1
中使用 Id
保存它,然后我使用 session2
中的 Merge
方法来提交其更改。
// session1, NHibernate
var obj1 = new FooModel();
session1.Save(obj1, Guid.NewId());
// session2, NHibernte
session2.Merge(obj1);
session2.Commit();
// and finally
session1.Commit();
结果我觉得有点出乎意料!通过 NHibernate 上面的 运行 代码将插入 2 条具有不同 ID 的记录。
不知道是不是因为session2
里面的对象在添加的时候是瞬态的?这不应该是因为您在 Save()
的调用中分配了密钥,但是您观察到的行为符合这种情况。
如果将代码更改为:
// session1, NHibernate
var obj1 = new FooModel();
session1.Save(obj1, Guid.NewId());
session1.Commit();
// session2, NHibernte
session2.Merge(obj1);
session2.Commit();
效果如何?
已经创建了两个 NHibernate
会话,我创建了一个新的模型对象并在 session1
中使用 Id
保存它,然后我使用 session2
中的 Merge
方法来提交其更改。
// session1, NHibernate
var obj1 = new FooModel();
session1.Save(obj1, Guid.NewId());
// session2, NHibernte
session2.Merge(obj1);
session2.Commit();
// and finally
session1.Commit();
结果我觉得有点出乎意料!通过 NHibernate 上面的 运行 代码将插入 2 条具有不同 ID 的记录。
不知道是不是因为session2
里面的对象在添加的时候是瞬态的?这不应该是因为您在 Save()
的调用中分配了密钥,但是您观察到的行为符合这种情况。
如果将代码更改为:
// session1, NHibernate
var obj1 = new FooModel();
session1.Save(obj1, Guid.NewId());
session1.Commit();
// session2, NHibernte
session2.Merge(obj1);
session2.Commit();
效果如何?