web-dev-qa-db-ja.com

エンティティフレームワークVS Ado.net

ADO.netとEntity Frameworkの基本的な違いは何ですか?

コマンドとデータセットの代わりにエンティティデータモデルを使用する必要があるのはなぜですか?

11
Zulqarnain Ejaz

ADO.NETエンティティは、ADO.NETコンポーネント上に上位の抽象オブジェクトモデルを作成するORM(オブジェクトリレーショナルマッピング)です。したがって、以下のコードに示すように、データセット、データテーブル、コマンド、および接続オブジェクトに入るのではなく、顧客、サプライヤーなどの上位レベルのドメインオブジェクトで作業します。

DataTable table = adoDs.Tables[0];
for (int j = 0; j < table.Rows.Count; j++)
{
    DataRow row = table.Rows[j];

    // Get the values of the fields
    string CustomerName =
        (string)row["Customername"];
    string CustomerCode =
        (string)row["CustomerCode"];
}

以下はEntity Frameworkのコードで、ベースレベルのADO.NETコンポーネント(データセット、データリーダー、コマンド、接続オブジェクトなど)ではなく、顧客などの上位レベルのドメインオブジェクトに取り組んでいます。

foreach (Customer objCust in obj.Customers)
{}

EFの主な唯一の利点は、モデル(中間層)、データアクセス層、およびマッピングコードのコードを自動生成するため、開発時間を大幅に短縮できます。

ここ

14

その質問は誤解を招くようなものだと思います。 Entity FrameworkはADO.NETのラッパーです。したがって、これらの2つの間にパフォーマンスの違いはほとんどありません(エンティティフレームワークは少し遅いかもしれません)。何を使用するかは、完全に好みに依存します。私は現在、データベースに関連するほぼすべてにエンティティフレームワークを使用しています。

2
Boris Bucek