0

ネストされた一連のビジネス オブジェクトがあるとします。

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int ID { get; set; }
    public string Street { get; set; }
    // ...
    public AddressType Type { get; set; }
}

public enum AddressType
{
    Billing,
    Mailing
}

ここで、顧客の名前のみを更新したいとしましょう。私が遭遇した問題は、呼び出しているサービス メソッドがそれらを無視している場合でも、ネストされたオブジェクトのすべてのデータを提供する必要があることです。

問題は、列挙型、ID、およびその他の値が null 許容されないことです。したがって、EF はデータが null であると不平を言います。

これを機能させるには、ダミー データをオブジェクトに追加する必要がありました (これもサービス メソッドによって無視されます)。データのサブセットのみが必要な場合は、完全なオブジェクトを前後に送信する必要はないようです。

EF/WCF で部分的な更新を処理するより良い方法はありますか?

編集:

WCF サービスに次のメソッドがあるとします。

public void UpdateCustomer (Customer customer)

変更Customerされた値NameID

4

1 に答える 1

1

Delta インターフェースで使用するためのいくつかの異なるパターンがあります。例: インターフェイスの 2 番目のパラメーター。2 番目のパラメーターは、MemberName コレクションにすることができます。コレクションには、呼び出し元が処理するすべてのメンバーの名前が設定されます。

オプション 2、インターフェイスに別のモデルを実際の EF クラスとして使用します。キーを除くすべてのフィールドをオプションとしてマークします。関連するフィールドのみを含む XML を送信できます。どの要素が存在し、どの要素が存在しないかを区別する必要があります

デフォルト値にリセットする必要がある/可能性があるため、タグが見つからない場合は何もしないことを意味する可能性があります。他にもパターンはありますが、これはほんの2例です。

于 2012-12-26T21:47:56.103 に答える