首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时NRules中使用静态ISession规则时如何更新事实

在运行时NRules中使用静态ISession规则时如何更新事实
EN

Stack Overflow用户
提问于 2015-07-17 02:23:10
回答 1查看 758关注 0票数 1

使用NRules,我希望能够创建一个会话,插入事实,启动并完成它,并且当会话仍然在内存中(静态变量)时,我希望调用事实的更新。

代码语言:javascript
复制
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)会给我一条错误消息:“用于更新的事实不存在”,即使我可以看到所有的事实仍然在会话中。

任何想法都是受欢迎的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 06:20:36

我知道如果其他人遇到这个问题该怎么做。保留ISession (以上述方式),使用_session.Query<Facts>()检查您已经拥有的内容。操作您的代码以更新此对象。在那通电话之后

代码语言:javascript
复制
_session.TryUpdate(Fact);
_session.Fire();

它是有效的:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31461782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档