0

私は2つのテーブルを持っています。DevExpress XAF で開発されたテーブル A (マスター) とテーブル B (子)。テーブル B のレコードがこの要件を満たしている場合、テーブル A (フィールド エンド) の 1 つのプロパティを更新する必要があります。

  • Field Status = "Ended"、ここで Status は Enum フィールドです。

したがって、表 A では、フィールド End は bool プロパティです。

これが私がこれまで書いたことですが、運はありません...

表 B のコード ページ:

private bool _end;
        public bool End
        {
            get
            {
                return _end;
            }
            set
            {
                bool result;
                
                TableB.Status c = new TableB.Status();
                if (c == TableB.Status.Ended)
                {
                    result = true;
                }
                else
                {
                    result = false;
                }

                SetPropertyValue<bool>("StatusField", ref _end, result);
            }
        }

プロジェクトを実行し、テーブル B のフィールドを「終了」に変更し、レコードを保存しますが、テーブル A のフィールド End は変更しません。

アイデアはありますか?

ありがとう

4

1 に答える 1

0

マスターテーブル「A」(ビジネスオブジェクトまたはBOになるXAF用語で)には「End」というプロパティがありますが、投稿したコードはそのプロパティを定義しているように見えます。子「B」用です。

コードがBO「A」用であると言うつもりであると仮定すると、それは間違った端から問題に近づいています-投稿されたコードは、A.Endに値が割り当てられている場合にのみ効果がありますが、値を設定したい場合B.Status が「Ended」に設定されているため、B の「Ended」プロパティにコードを記述する必要があります。

また、どのフィールドが 2 つの BO に関連しているかについても述べていないため、この例では、子 B にはタイプ A の「Master」というプロパティがあると仮定します。また、「Status」列挙型が定義されていると仮定します。 Bで。

その場合、B のコードで次のようなものが必要になります。

    private Status _status;
    public Status StatusField {

        get { return _status; }
        set {
            if (value == Status.Ended && Master != null) {
                Master.End = true;
            }
            SetPropertyValue("StatusField", ref _status, value);
        }
    }
于 2015-04-29T15:01:07.567 に答える