0

(1) 以下で説明する 2 つの異なる方法を使用してデータ アクセスを実行することの違いを誰か説明してもらえますか?

context.Refresh(RefreshMode.ClientWins, context.ParentEntity);

return (from pe in context.ParentEntity select pe).ToList();

(2) 子エンティティ/ナビゲーション プロパティが関係するより複雑な例については、これら 2 つの呼び出しの間に根本的な違いはありますか。

context.Refresh(RefreshMode.ClientWins, context.ParentEntity);
context.Refresh(RefreshMode.ClientWins, context.ChildEntity);

return (from pe in context.ParentEntity.Include("ChildEntities") select pe).ToList();

(3) 最後に、2 つの方法の組み合わせを実行するコードがあります。

context.Refresh(RefreshMode.ClientWins, context.ParentEntity.Include("ChildEntities"))

あるメソッドを別のメソッドよりも優先して使用する必要がある場合、またはそれらがすべて機能的に同等である場合に、頭を悩ませようとしています。

4

1 に答える 1

0

私はあなたが間違った考えを持っていると思いRefreshますInclude...

Refreshオブジェクトをデータ ソースからのデータで更新できるようにすることと、競合を解決できるメカニズムにするという 2 つの目的があります」( MSDNから)

"Includeクエリ結果に含める関連オブジェクトを指定します。" ( MSDNから)

したがって、あなたの質問に答えるRefreshは、無効なメソッドであり、クエリではありません...同時実行を管理し、競合を解決するために使用されます...これから結果を取得しようとしていたかどうかはわかりませんが、できませんそれが非常にうまくいったと想像してください!

あなたの(from pe in context...ステートメントは、メソッドを利用するLINQIncludeクエリであり、クエリ結果に指定されたオブジェクトが含まれます(聞こえるように)。

メソッドの MSDN ページを参照すると、メソッドが何をしているのかわからない場合に、通常はかなり役立ちます。

これが役に立ったことを願っています!

于 2012-12-18T21:19:35.247 に答える