将对象从一个 NHibernate 会话传输到另一个会话



>已经创建了两个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();

效果如何?

最新更新