根据父级的值验证子集合的总和

时间:2012-08-22 13:17:40

标签: csla

使用CSLA,我的父级预算属性设置为x。此父级可以包含任意数量的子详细信息对象。我需要在父项上实现一个验证规则,该规则仅在所有子项的预算属性总和加起来在父项上定义的预算属性的值时才有效。我该怎么做?

1 个答案:

答案 0 :(得分: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版,但这也适用于以前的版本。不幸的是,我没有确切的版本号,您可以使用它。