7

最近、Linq-to-Entities のトレースについて質問しました

DataContext の使用について言及しているため、答えの 1 つが正しくなかったと思います。LINQ-to-Entities 用の DataContext はありますか? もしそうなら、どうすれば入手できますか?

4

4 に答える 4

10

LINQ to Entities は、DataContext ではなく ObjectContext を使用します。

EF の簡単な説明を次に示します。

LINQ to Entities、ObjectContext クラス、Entity Data Model

LINQ to Entities クエリは、オブジェクト サービス インフラストラクチャを使用します。ObjectContextクラスは、EDMを CLR オブジェクトとして操作するための 主要なクラスです。開発者は、ObjectContext を通じて ObjectQuery インスタンスを構築します。汎用 ObjectQuery クラスは、型指定されたエンティティのインスタンスまたはコレクションを返すクエリを表します。ObjectQuery によって返されるエンティティ オブジェクトは、オブジェクト コンテキストによって追跡され、SaveChanges メソッドを使用して更新できます。

LINQ to SQL の DataContext と同じようには機能しません。どちらも接続を管理し、変更を追跡することは事実ですが、データ構造と関係をモデル化する方法が異なります。

ただし、LINQ to SQL は「エンティティ」を参照しており、EF に精通していない人は、あなたが話していることを知っていると考えている可能性があるため、その間違った回答の投稿者に少し余裕を持たせます。

例えば:

LINQ to SQL と DataContext クラス

DataContext は、データベース接続を介してマップされるすべてのエンティティのソースです。取得したすべてのエンティティに加えた変更を追跡し、複数回取得したエンティティが同じオブジェクト インスタンスを使用して表されることを保証する "ID キャッシュ" を維持します。

混乱する可能性があります。

于 2008-09-27T03:21:55.180 に答える
5

どうやら、LinqToEntities はDataContext の代わりにObjectContextを使用します。

オブジェクト チームが DataContext を作成し、データ チームが ObjectContext を作成した (そして、DataQuery と ObjectQuery などに) 「名前付けは難しい!」


更新、EF4.1 を使用した .net 4 の場合、LinqToEntities を操作するときにDbContextにも関心があるかもしれません。参照してください。

于 2008-09-27T03:19:40.880 に答える
1

ADO.NETエンティティデータモデル(.edmxファイル-.dbmlファイルに相当)を参照している可能性があります。

VSでは、[アイテムの追加]->[ADO.NETエンティティデータモデル]に表示されます

于 2009-01-06T07:14:48.503 に答える
0

これらの任意の構文の違いはたくさんあります。たとえば、SubmitChanges (L2S) と SaveChanges (L2E) です。ただし、それは 2 つのテクノロジの違いのほんの一部にすぎません。

于 2008-10-02T23:08:34.803 に答える