したがって、TPT(テーブルごとの種類)の継承を実装するとき、MicrosoftのEntity Frameworkに存在する基本的なフロアを発見するのは最後の人です。エンティティフレームワークの種類ごとのパフォーマンス
3つのサブクラス、20個以上のカラムと10個のカラムからなる基本テーブル/クラスでプロトタイプを構築したところ、すべてが美しく動作し、私はアプリケーションの残りの部分について概念。今では、他の20のサブタイプとOMGを追加する時が来ています。基本クラスのフィールドにアクセスすることにのみ関心があるにしても、単純なselectで生成されるSQLを探し始めました。
This pageには、問題の素晴らしい説明があります。
は、誰もが どのの回避策は、それは私が持っていないことを意味しますがあり、TPTおよびEFを使用して生産に入った: a)は私が達成しようとするすべてのものに反するTPH(へのスキーマ変換、私のDBデザイン - urrrgghh!)? b)別のORMで書き直しますか?私はそれを見て、私はEF(おそらくEFExtensionsを使用して)内のストアドプロシージャへの参照を追加することができる必要があります。 SP内のモンスターUNION/JOINは、コールが行われるたびにSQLが生成されるのを防ぎます。何かをするつもりはないが、あなたはそのアイデアを得る。
私が見つけたキラーは、ベーステーブルにリンクされているエンティティのリストを選択しているときです(ただし、選択しているエンティティはサブクラステーブルではありません).PKでフィルタリングしたい私がx=>x.BaseClass.PK == 1
を使用してフィルタリングして他のプロパティにアクセスできるようにするには.Include("BaseClassTableName")
を実行しますが、ここでもマザーSQL生成を実行します。
3.5 SP1がインストールされた.net 2.0ランタイムに限定されているため、EF4を使用することはできません。
誰もこの混乱から抜け出す経験はありますか?
私は前EF4のために話すことはできませんが、その中で文をブログ「表・パー・タイプの継承が100%である。
次のような)(付属してコンパイルクエリを使用することができます使用できません。少なくともEF4ではちょっとばかげている。いくつかのパフォーマンスの問題はありますが、20のサブタイプがある場合は、正しいデータベース正規化を実行したことを確認してください。それらの20のサブタイプは、別々の親エンティティに分割できませんか? – RPM1984
他のORMが問題なくTPTデザインを処理しているようです。ブログに関しては、タイプが多いデータベース/クラス設計を実装するときに、実行前にSQLを生成するのに要する時間が数分を超えていると、私はその文をバックアップするだけで十分だと言いますプロダクション環境では使用できません。すべての車両(基本テーブル/クラス)について記憶された共通情報と、平面/電車/自動車(サブテーブル/クラス)について記憶された固有情報 - 車両を扱うのではないが、 – Tr1stan
というアイデアを得て、20種類の車種が保存されています。車のサブタイプとすべての検索値に入る前に、 – Tr1stan