1

使用 CSLA,我有一个将预算属性设置为 x 的父级。这个父对象可以有任意数量的子细节对象。我需要在父节点上实施一个验证规则,该规则仅在所有子节点的预算属性的总和加上父节点上定义的预算属性的值时才有效。我该怎么做呢?

4

1 回答 1

1

如果您仍然没有它,请将其添加using到父类:

using Csla.Rules;

AddBusinessRules()然后在父级中添加以下规则:

BusinessRules.AddRule<MyParent>(MyDetailsProperty,
    o =>
    {
        return o.Budget == o.MyDetails.Sum(d => d.Budget);
    }, "The value of the budget for parent and details do not match.");

true如果父项中的预算值等于子项中预算的总和,则规则返回。

为了完成这项工作,您需要在子项更改时触发规则检查,在父类中添加以下内容:

protected override void OnChildChanged(Csla.Core.ChildChangedEventArgs e)
{
    base.OnChildChanged(e);
    BusinessRules.CheckRules(MyDetailsProperty);
}

我使用的是 CSLA 4.5 版,但这也适用于一些以前的版本。不幸的是,我没有确切的版本号,您可以从中使用它。

于 2013-09-20T18:29:16.867 回答