>已经创建了两个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();
效果如何?