从一个 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();

效果如何?