我们正在运行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
答案 0 :(得分:0)
今天我重新讨论了这个问题,我想我明白为什么会这样做,在我看来刷新时它保留了原始值,因为在我刷新之前我的代码中我也使一个Invoice对象具有预防性。发票本身没有EntityReactionTypes,但在它的对象图中它确实引用了那里。
我认为会议决定将这些值保留在发票的预先版本中。
所以我所做的就是把这个刷新放在方法的顶部,它开始像以前一样工作,并实际从数据库中提取值。
虽然我刷新时不会改变属性值,但对我来说似乎很奇怪,但这就是它为我所做的。