NHibernate拒绝刷新对象

时间:2010-09-16 13:01:32

标签: nhibernate

我们正在运行webservices,调用它来填充和更新我们的数据库,其中一个函数是一个EntityReactionType,由具有ID的webservice的调用者填充。

EntityReactionType有一个复合的多对一键,由Entity和(suprise)ReactionType组成。

这些ID被正确的值填充,然后我想从数据库中刷新对象,以便检查在数据库中设置但用户不知道的某些值。在这种情况下:IsStart和IsClosing。

我使用以下代码完成所有这些操作:(这是一个简化的剪辑,但想法应该清楚)

我可以看到刷新执行SQL,这是正确的,并显示它有IsStart = False和IsClosing = True。

然而,当我在Refresh IsStart = null和IsClosing = False之后查看对象值时,

//entityReactionTypeRepository.Merge(reaction.EntityReactionType); 
entityReactionTypeRepository.Refresh(reaction.EntityReactionType);

if (reaction.IsResolved == true || reaction.EntityReactionType.CloseDispute == true)
{
     reaction.IsResolved = true;
     reaction.Invoice.IsDisputed = false;
} 

我已经注释掉了Merge系列,因为这是我在搜索google时发现但没有改变的东西(想法是你不能刷新一些不是转换但没有改变的东西,SQL得到执行但是值不会得到更新)

我现在正在接近制作一个只是创建一个独立标准并执行它的工作,但我知道这应该是可能的。

问候,

Folkert

1 个答案:

答案 0 :(得分:0)

今天我重新讨论了这个问题,我想我明白为什么会这样做,在我看来刷新时它保留了原始值,因为在我刷新之前我的代码中我也使一个Invoice对象具有预防性。发票本身没有EntityReactionTypes,但在它的对象图中它确实引用了那里。

我认为会议决定将这些值保留在发票的预先版本中。

所以我所做的就是把这个刷新放在方法的顶部,它开始像以前一样工作,并实际从数据库中提取值。

虽然我刷新时不会改变属性值,但对我来说似乎很奇怪,但这就是它为我所做的。