1

私たちは大きな (そして成長中の!) データベースを持っています。手動でモデルを構築する必要がないように努めており 、EDMX エンティティ モデルを構築することになっている このEdmGen2を見つけました。

非常に大きなデータベースがあるため、すべてのテーブルを同じモデルに含めたくありません。すべてが機能するようになりましたが、生成されたモデルにはすべてのテーブルが含まれています。

EntityStoreSchemaGenerator 内のテーブルの読み取り専用リストがあります。それは(実際には)すべてのテーブルです。

このツールは、完全なデータベースよりも少ないモデルを作成しますか? 配置するテーブルを選択して、それらのみを使用できますか?

4

4 に答える 4

3

EdmGen2 コードには、/RetrofitModel というオプションが付属しています。このモードの重要なポイントは、いくつかのデータ マイニング アルゴリズムを実行して、データベース インスタンスに明らかな継承のような関係があるかどうかを確認し、存在する場合は、それらの継承を含む EDMX を生成することです。

ただし、/RetrofitModel オプションのもう 1 つの機能は、テーブルを選択できることです。たとえば、AdventureWorks サンプル データベースがある場合は、次のステートメントを発行できます。

EdmGen2 /RetrofitModel "Server=(local);Integrated Security=true;Initial Catalog=AdventureWorks;" "System.Data.SqlClient" "AVWorks"

データベース内のテーブルのリストが表示されます。その時点で、モデルに含めるテーブルを確認できます。

于 2009-10-07T22:39:17.987 に答える
1

tupleFraction パラメーターは、「重要な」サブクラスであることの意味を定義するのに役立ちます。データ マイニング ルールはヒューリスティックであるため、常識が一致しない可能性のあるパターンを見つける可能性があります。

tupleFraction パラメーターは次のように述べています (いくつかのルールについて): EdmGen++ がサブクラスを見つけたと判断した場合、新しいサブクラスがその親クラスからのインスタンスの tupleFraction よりも少ない場合、新しいサブクラスを「重要ではない」と見なし、そうしないでください。それを作成します。パラメータはオプションで、指定しない場合は 0.05 (5%) になると思います。

現在のバージョンでは、UI からのみテーブルを指定できます。ただし、ファイルまたはその他のソースからテーブルのリストを取得するのは簡単です。次のバージョンの To-Do リストの一番上に追加します。

更新: GUI なしでテーブルを指定できるように、code.msdn.microsoft.com/edmgen2 のコードを更新しました。以前のバージョンでは、RetrofitModel オプションによってダイアログが表示され、ユーザーはモデルに含めるテーブルを選択できました。ConceptualEdmGen dll には、ダイアログを表示せずにテーブルのリストを設定できる 2 つのパブリック メソッドが追加されました。文字列。

パッケージに表示される EdmGen2 コードは、「ファイルから」オプションを使用して、現在のディレクトリで「Tables.txt」というファイルを探し、見つかった場合はその内容を dll にフィードして、テーブルのリストを設定します。 . たとえば、ファイル「Tables.txt」の内容が次の場合:

HumanResources.Department
HumanResources.Employee
HumanResources.EmployeeAddress
HumanResources.EmployeeDepartmentHistory
HumanResources.JobCandidate
HumanResources.Shift

EdmGen2 は、(RetrofitModel オプションの場合) AdventureWorks の HumanResources スキーマ内のすべてのテーブルのモデルを生成します。どちらの方法でも、リストが空の場合、データベース内のすべてのテーブルがモデルに追加されます。どちらのテーブル選択メソッドも呼び出されない場合でも、テーブル選択 UI は表示されます。

于 2009-10-12T21:24:49.807 に答える
0

これに対する私の解決策は、テーブル名だけでなく、EntityStoreSchemaFilterEntry パラメーター (Category、Schema、Name、ObjectType、FilterEffect) に解析されるテキストを含む Filters.txt ファイルを読み取る EdmGen2 のバリアントを作成することでした。これにより、特定のビューとテーブルで動作するモデルとアセンブリを生成できます。EdmGen2 ではできないと思います。

もちろん、それは ConceptualEdmGen では機能しませんが、利用可能なソースがないため、とにかくそのコンポーネントを使用しないことにしました。

まだ解決していない問題の 1 つは、ストアド プロシージャの関数定義を CSDL と MSL に適切に挿入する方法です。私はSSDLでそれを持っていますが、他の方法をまだ知りません。

于 2010-02-24T08:29:32.977 に答える
0

EdmGen2 の担当者にメールを送信しました。彼が何を返すか見てみましょう。

アレックス・ジェームズ

プログラム マネージャー、エンティティ フレームワーク チーム、マイクロソフト。

于 2009-10-07T19:54:31.460 に答える