0

XPO クラスの単純なルールを実現したいと考えています。

状況は次のとおりです: - Vehicle クラスがあります:

public class Vehicle : BaseObject
{
    public Vehicle(Session session)
        : base(session)
    {
    }
    public override void AfterConstruction()
    {
        base.AfterConstruction();
    }

    //...properties

    [Association, DevExpress.Xpo.Aggregated]
    public XPCollection<MeterEntry> MeterEntries
    {
        get { return GetCollection<MeterEntry>("MeterEntries"); }
    }

}
  • そして MeterEntry クラス:

    public class MeterEntry : BaseObject { public MeterEntry(Session session) : base(session) { } public override void AfterConstruction() { base.AfterConstruction(); }

    private int _MeterValue;
    private DateTime _Date;
    
    public int MeterValue
    {
        get
        {
            return _MeterValue;
        }
    
        set
        {
            SetPropertyValue("MeterValue", ref _MeterValue, value);
        }
    }
    
    public DateTime Date
    {
        get
        {
            return _Date;
        }
    
        set
        {
            SetPropertyValue("Date", ref _Date, value);
        }
    }
    
    [Association]
    public Vehicle Vehicle { get; set; }
    

    }

私はこのルールを試しました:

RuleCriteria("MeterValue >= Vehicle.MeterEntries[Date <=  xxx ].Max(MeterValue)")]

xxx では、TargetObject.Date のような現在のオブジェクトの Date smtng の値が必要ですが、うまくいきません。

4

1 に答える 1

0

^ 文字を使用する必要があります。

RuleCriteria("MeterValue >= Vehicle.MeterEntries[Date <= ^.^.Date].Max(MeterValue)")]

Parent Relationship Traversal Operatorの詳細については、 https : //documentation.devexpress.com/#CoreLibraries/CustomDocument4928 を参照してください。

于 2015-10-18T17:35:47.057 に答える