【发布时间】:2015-06-17 10:03:11
【问题描述】:
我有一个使用 Nhibernate 保存的对象。该对象使用复合键并声明如下:
CompositeId()
.KeyProperty(x => x.CreditorName)
.KeyProperty(x => x.CreditorIBAN)
.KeyReference(x => x.Config, "ProfileName");
Map(x => x.ID, "ID").ReadOnly();
Map(x => x.CreationDate, "CreationDate").Default(null);
Map(x => x.ContractReference, "ContractReference");
Map(x => x.CreditorBIC, "CreditorBIC");
References<C_ContractType>(x => x.ContractType, "ContractType_ID");
References<C_Country>(x => x.CreditorCountry, "CreditorCountry");
Table("Creditor");
Cache.ReadWrite();
我们可以毫无问题地保存,但是当我们尝试使用Session.SaveOrUpdate(entity); 更新字段(无论是哪一个)时,什么都没有完成(没有更新)并且没有错误消息。
我们错过了什么吗?感谢您的帮助!
-- 编辑--
我在更新方法之后添加了Session.Flush(),这会更好一些,因为我可以更新任何值,除了键中的值(CreditorName 和 CreditorIBAN)。有什么想法吗?
【问题讨论】:
-
这里非常重要的是:“Session.SaveOrUpdate(entity)”不保留任何东西。它只是更改会话中的数据(如果之前已分离)...请确保您已调用
Session.Flush() -
@RadimKöhler:谢谢。正如您可能已经看到的,我添加了这个,但它只是好一点。还有其他想法吗?
-
Seyos,您很可能不喜欢我的回答,但我认为这是我可以分享的最佳建议。希望对您有所帮助...
标签: c# nhibernate fluent-nhibernate