2

I'm new to Entity Framework and, of course, I have found few questions on SOF with regards to target use-cases.

Let me give you some information. I'm not dealing with different database vendors or different databases; one, and only one, SQL Server 2008 and the database has less than 30 tables. Do I really need to redo things and go with Entity Framework?

EDIT:

Thanks to James for fixing my question. So I'm assuming using EF adds up overhead and does some work in background which I won't know. This is MS working style so I guess my next questions are:

  1. Does it affect performance as well?

  2. Does it support hierarchyid data type?

4

2 に答える 2

5

エンティティ フレームワーク (または LINQ to SQL、NHIbernate などの他のオブジェクト リレーショナル マッパー) を使用する主な理由は、アプリケーションでのデータ アクセスを容易にすることです。EF を使用すると、SQL コードを自分で記述する必要なく、新しい値を .NET オブジェクトに割り当てるだけで、LINQ を介したクエリと単純な更新の機能にアクセスできます。

個人的には、グリーン フィールド開発には EF Migrations で EF Code First を使用し、構築する既存のデータベースがある場合は LINQ to SQL を使用します。

于 2012-07-14T18:05:28.693 に答える
2

インタラクティブなデータ操作を行う場合は、EntityFramework などの ORM オブジェクト リレーショナル マッパーを使用する必要があります。典型的な OLTP アプリでは、プレーンな ADO.NET API などを使用する場合と比較して、必要なコードの行数を大幅に削減できます (動的SQL またはストアド プロシージャの呼び出しを使用)。ORM にはパフォーマンス ペナルティがありますが、インタラクティブ システムでは、このパフォーマンス ペナルティは無視できます。システムと対話する人間

一方、インタラクティブなユーザーの介入なしに、いくつかのテーブルからデータを取得して他のテーブルに配置する複雑なデータの大量のバッチ処理を行う必要がある場合、この状況では、ORM アプローチのパフォーマンスの低下が顕著になります。データベースのメモリ空間から何かを取り出すのを避けることは効果があり、ストアド プロシージャを使用することのパフォーマンス上の利点が最終的​​に顕著になります。

したがって、一般的に:

  • インタラクティブなものには ORM を使用する
  • 非対話的なバッチ処理にはストアド プロシージャを使用する
于 2012-07-15T03:57:05.497 に答える