DBContextとObjectContextの違いは何ですか
目次:
NS 主な違い DBContextとObjectContextの間は DBContextはObjectContextのラッパーであり、ObejctContextの最も一般的に使用される機能を示します。一方、ObejctContextは、厳密に型指定されたエンティティクラスを使用してデータベースで操作を実行できるコアEntity FrameworkAPIの一部です。
通常、アプリケーションをデータベースに接続する必要があります。プログラマーは、任意のプログラミング言語でアプリケーションを開発できます。ほとんどのプログラミング言語は、データベースと対話するためのメソッドをライブラリに提供しますが、それは難しいプロセスになる可能性があります。これは、プログラムにオブジェクトがありますが、データベースで操作を実行するにはSQLクエリが必要だからです。この問題の代替手段は、EntityFrameworkを使用することです。 Entity Frameworkは、プログラマーが.NETアプリケーションのオブジェクトをリレーショナルデータベースのテーブルと列にマップできるようにするオブジェクトリレーショナルマッパー(ORM)です。全体として、DBContextとObjectContextは、EntityFrameworkに関連する2つの概念です。
コードファースト、データベースファースト、DBContext、エンティティ、ObjectContext
DBContextとは
DBContextは、ObjectContextの軽量な代替手段です。つまり、これはObjectContextラッパーです。プログラマーは、データベースファースト、コードファースト、モデルファーストの開発アプローチにDbContextを使用できます。さらに、DBContextは主に、使いやすいAPIのコレクションで構成されています。そして、ObejctContextはこれらのAPIを公開するのに役立ちます。また、これらのAPIを使用すると、プログラマーはObejctContextでは許可されていないコードファーストアプローチを使用できます。
ObejctContextとは何ですか
ObjectContextは、データベース接続やエンティティモデルのさまざまなエンティティの管理などのデータベース操作を管理するために使用されるクラスです。言い換えると、ObejctContextは、概念モデルで定義されたエンティティへのアクセスと操作を可能にする基本クラスまたはプライマリクラスです。さらに、ObjectContextは、データソース(またはデータベース)への接続、エンティティデータモデル(EDM)のメタデータ、およびオブジェクトに加えられた変更を監視するためのObject StateManagerで構成されます。
全体として、ObjectContextは複数のタスクを実行します。まず、データベース接続を処理します。次に、追加、更新、削除を実行するための組み込み機能で構成されています。さらに、保留中の変更の状態を提供し、エンティティに加えられた変更を保存します。
DBContextとObjectContextの違い
意味
DBContextは、ObjectContextの最も一般的に使用される機能を公開するObjectContextのラッパーです。対照的に、Object ContextはコアエンティティフレームワークAPIのクラスであり、厳密に型指定されたエンティティクラスを使用してクエリを実行し、データベースに対して行われた更新を追跡できます。したがって、これがDBContextとObjectContextの主な違いです。
準拠したクエリ
ただし、DBContextはコンパイル済みクエリをサポートしていませんが、ObjectContextはコンパイル済みクエリをサポートしています。したがって、これはDBContextとObjectContextのもう1つの違いです。
エンティティの追跡/監視
フレームワーク
さらに、プログラマーはEntity Framework 4.1以降でDBContextを使用できますが、プログラマーはEntity Framework4.0以下でObjectConextを使用できます。
アプローチ
さらに、DBContextは、モデルファースト、データベースファースト、およびコードファーストのアプローチで使用されます。一方、ObjectContextは、ModelFirstおよびDatabase-Firstアプローチでのみ使用されます。
スレッドセーフ
また、DBContextとObjectContextのもう1つの違いは、DBContextがパブリック静的メンバーと共有メンバーにスレッドセーフを提供するのに対し、ObjectContextはスレッドセーフを提供しないことです。
結論
全体として、DBContextとObjectContextは、データをオブジェクトとして照会および操作する機能を提供します。 DBContextとObjectContextの主な違いは、DBContextはObjectContextのラッパーであり、ObejctContextの最も一般的に使用される機能を示しますが、ObejctContextは、厳密に型指定されたエンティティクラスを使用してデータベースで操作を実行できるコアEntity FrameworkAPIの一部です。簡単に言うと、DBContextとObjectContextは概念的に類似していると見なすことができます。
参照:
1.「EntityFrameworkのコンテキストクラス」。 EntityFrameworkのコンテキストクラス。こちらから入手できます。
画像提供:
1.「3170992」(CC0)Pixabay経由