我们正在运行的webservices被调用来填充和更新我们的数据库,在一个函数中,一个EntityReactionType get的webservice的调用者用ID填充。NHibernate拒绝刷新对象
EntityReactionType具有由实体和(惊讶)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;
}
我自认为注释掉归并线是我发现同时搜索谷歌,但什么也没有改变(的想法是,你不能刷新东西是不transistant,但什么都没有改变,SQL获取的执行eitherway但值不会更新)
我接近在这个时候做一个工作,只是创建detachedcriteria并执行,但我知道这应该是这样的可能。
问候,
Folkert
您可以发布完整刷新方法的代码吗? – AlexCuse 2010-09-16 13:10:07
这只是调用当前的Session.Refresh(object) – 2010-09-16 13:19:43
这些值是如何在数据库中设置的?触发? – AlexCuse 2010-09-16 16:00:27