0

我使用以下方法添加了一个链接的事实:

context.InsertLinked(longOrderKey, longOrder);

稍后,我想删除这个事实。我很容易在没有记录的情况下构造密钥:

var longOrderKey = (managedAccount.AccountId, PositionType.Long, fungible.FungibleId);

那么为什么在使用以下方法删除链接事实时需要记录:

context.RetractLinked(longOrderKey, longOrder);

为什么这个方法不能只使用longOrderKey?如果我没有“longOrder”记录怎么办。我真的需要在删除它之前查看它吗?

4

1 回答 1

1

链接的事实与创建它们的激活相关联。密钥的目的是如果激活产生了多个关联的事实,则能够识别特定的事实。如果您只在规则的 RHS 中插入一个关联的事实,您可以真正将键设置为任何内容,例如“1”;如果要插入两个事实,可以将键设置为“1”和“2”,依此类推。本质上,关键是识别激活中的关联事实。事实本身是需要的,以便引擎可以在工作内存中找到相应的条目。很像 ISession.Retract 需要事实对象,以便它可以在工作内存中找到它。另一点是,在大多数情况下,您不需要撤回链接的事实,因为一旦激活被删除(即

于 2021-09-08T00:43:10.920 回答