1

私は仕事でEntityFrameworkを使用していますが、いくつかの問題に直面しました。

通常、あるドメインに関連するテーブルを含む小さなEdmxのファイルを作成することについて耳にします。ヘルプデスクEdmx、HR Edmxなど。すべてのテーブルを1つの大きなEdmxにロードする代わりに、はるかに簡単ですが、パフォーマンスを考慮します(at主に設計と構築時間)、それは実行可能ではありません。

最初にcommomテーブルについて、いくつかの問題が発生しました。つまり、Employeesテーブルです。これはすべてEdmxであり、Employeeクラス参照を使用し、両方の名前空間を使用している場合は競合します。次に、Empoyeeを参照する必要があります。 MyCompany.HelpDesk.Employeeというフルネームのクラス。

自然に見えません。

すべてのEDMXで同じテーブルを繰り返し追加していることに気付きました。これはやり直しです。また、[テーブルの追加]ダイアログに2kのテーブルがあるため、エンティティフレームワークの設計にテーブルを追加するのに数分かかります。

おそらくVS2012は、同じEdmxファイルに2kテーブルをロードするソリューションになる可能性があります(デザイナーが分割される可能性があるため)が、コンパイルも遅れるため、デザイナーを開くだけでなく、それも信じられません。

もう1つのオプションは、コードファーストですが、データベースからすべてのテーブルを読み込もうとするため、データベースをクラスにリバースエンジニアリングするための適切なツールがなく、約2時間かかります。

4

1 に答える 1

1

通常、問題の解決策はありません。EF は、複数の CSDLファイル間で共通のエンティティを共有するいくつかの方法をサポートしていますが、多くの欠点があります。

  • デザイナーではサポートされていません (VS2012 デザイナーがこれをサポートしているかどうかは試していません) -> EDMX ファイルを XML として維持します。
  • CSDL レベル (クラス) でのみサポートされます -> まだ単一の SSDL (テーブル) と MSL (マッピング) があり、それらを手動で維持する必要があります
  • 共有エンティティへの一方向の関係のみ (共有エンティティは、他の共有エンティティへのナビゲーション プロパティのみを持つことができます)。

VS2012 では、単一の EDMX で複数のダイアグラムを操作できますが、2k テーブルでこれがどれほど高速になるかはわかりません。

IMHO 2k テーブルは、EF マッピング機能のユース ケースのようには聞こえません。特に、コードが生成されることを期待する機能の場合はそうではありません。大規模な開発には、通常、大規模なコーディングまたは独自のツールの開発が含まれます。現在の方法 (共有エンティティを再度マッピングすることによる) は、既定の EF ツールを使用した最善のアプローチです。

POCO クラスに T4 ジェネレーターを使用する場合、T4 テンプレートを変更して、すべての EDMX ファイルに常に同じクラスを使用することもできます。POCO クラスはクラス名によってのみマップされます。名前空間は違いはありません。これには、共有クラスが一度だけ生成され、すべてのモデル固有のクラスから正しく参照されるようにするために、T4 ジェネレーターにいくらかの労力を費やす必要があります。

ところで。アプリケーションを起動してすべてのマッピングをロードするのにどれくらいの時間がかかりますか? 事前生成された EF ビューを使用していますか?

于 2012-07-17T09:00:38.683 に答える