1

私は最初にC#2010エンティティフレームワークコードを使用していますこのようなクラスがある場合

partial class test    
{
        public double value1;
        public double value2;
        public double value3;
        public double totals;
}

コードによって生成されたもの

合計を計算する部分クラスを作成するにはどうすればよいですか

partial class test    
{
        public double totals { get  { return value1 + value2 + value3; }    }

1 - 生成されたクラスを変更するのは現実的ではないことがわかっています。2 - プロパティの合計を部分的に定義する方法はありません。3 - メタデータ クラスを使用しても、savechanges まで合計が更新されません。

誰かが OnpropertyChanged を実装し、この問題を解決するために使用する方法を定義できれば幸いです

ありがとう

4

1 に答える 1

0

2番目のクラスのプロパティに「get」キーワードがありません。

partial class test    
{
        public double totals {  
            get { return value1 + value2 + value3; }
        }
}

または、Total()メソッドを定義することもできます。

あなたの質問(「合計を計算するための部分クラスを作成するにはどうすればよいですか」)からわかる限り、totalsプロパティ/メソッドは合計の新しい値で毎回計算を実行するため、OnPropertyChangedを使用する必要はありません。これは計算であり、実際には保存されるべきではないため、元のクラスからそのフィールドを削除できます。

データベースの合計値を実際に更新する必要がある場合は、提案したようにOnPropertyChanged部分メソッドを使用できます。新しいメソッドを呼び出すには、プロパティを使用する必要があります。

partial class test
{
    public double Value1
    {
        get { return value1; }
        set
        {
            value1 = value;
            Onvalue1Changed(value);
        }
    }

    partial void Onvalue1Changed(double value)
    {
        UpdateTotals();
    }

    private void UpdateTotals()
    {
        totals = value1 + value2 + value3;
    }
}

元のフィールドをプライベートにし、プロパティを介したパブリックアクセスのみを提供する必要があります。これは、より優れたコード設計であるだけでなく、必要な種類の機能を実装することもできます。

もちろん、従うことができる他のパターンがありますが、これはあなたが始めるのに役立つはずです。

于 2012-06-20T05:32:26.270 に答える