3

RIA サービスで Silverlight 4 を使用していますが、次のような問題があります。

親エンティティがあり、MyParent と呼び、子エンティティを MyChild と呼びます。親エンティティのメタデータ クラスは次のとおりです。

internal sealed class MyParentMetadata
{
    [Include]
    [Composition]
    public EntityCollection<MyChild> Childs { get; set; }
    (...)

マスター エンティティにクエリを実行するときは、子エンティティを含めます。

public IQueryable<MyParent> GetParentByID(int id)
{
    return this.ObjectContext.MyParent.Include("Childs").Where(x => x.ID == id);
}

クライアント側では、次のコードを使用してリクエストを行います。

context.Load<MyParent> (context.GetParentByID(id), LoadBehavior.RefreshCurrent, 
    lo => {
       var return = lo.Entities;
    });

初めてリクエストを行うと、うまく機能します。親オブジェクト 1 のリクエストを行い、次の結果が得られたとします。

=> Parent 1
    => Child 1.1
    => Child 1.2

しかし、別のオブジェクトに対して 2 番目の要求を行うと、最初のオブジェクトの子が 2 番目の結果にマージされたように見えます。私はこれを得る:

=> Parent 2
    => Child 1.1
    => Child 2.1
    => Child 1.2
    => Child 2.2

「Parent 2」オブジェクトが独自の子のみを持つようにするにはどうすればよいですか? LoadBehavior.RefreshCurrent パラメーターは、親オブジェクトに対してのみ機能しているようですが、子オブジェクトに対しては機能していないようです。

4

1 に答える 1

0

私は今まで必要としたことがありませんLoadBehavior.RefreshCurrent。含まれるエンティティでは機能しないようです。

私があなただったら、私はこの方法のいずれかを好む

  • ロード前にコンテキスト オブジェクトをクリアする

  • コンテキストの新しいインスタンスを取得します(うまくいかないように見えますが、問題を解決します。同じタイプのエンティティをロードするために、ほとんどの場合、これが必要ですが、目的は異なります)。

于 2013-07-04T12:04:39.937 に答える