使用NRules,我希望能够创建一个会话,插入事实,启动并完成它,并且当会话仍然在内存中(静态变量)时,我希望调用事实的更新。
private static ISession session; //this is instantiated when bulding the rules dinamically
public void RulesTest(RulesTest command)
{
//entities holds ALL facts ever inserted in session
var entities = _session.Query<Entity>();
_session.Insert(command.Fact);
Rule rule = GetRule();
_session.Insert(rule.Condition);
_session.Insert(rule.Action);
_session.Fire();
}这会触发规则,并正确地执行所有操作。我现在想要做的是添加能够更新曾经触发的相同事实的能力,但现在使用新的value...meaning,我想要更新事实,并让它再次运行条件。
在更新事实之后执行_session.Update(command.Fact)会给我一条错误消息:“用于更新的事实不存在”,即使我可以看到所有的事实仍然在会话中。
任何想法都是受欢迎的。谢谢。
发布于 2015-07-17 06:20:36
我知道如果其他人遇到这个问题该怎么做。保留ISession (以上述方式),使用_session.Query<Facts>()检查您已经拥有的内容。操作您的代码以更新此对象。在那通电话之后
_session.TryUpdate(Fact);
_session.Fire();它是有效的:)
https://stackoverflow.com/questions/31461782
复制相似问题