17

私は気難しいところですが、Entity FrameworkがEDMXファイルからDLLを生成する方法を調査していて、msdnでこれを見ました。

エンティティデータモデルデザイナ(エンティティデザイナ)は、設計時にモデルとマッピング情報を.edmxファイルに保存します。ビルド時に、Entity Designerは.edmxファイルの情報を使用して、実行時にEntity Frameworkに必要な.csdl、.ssdl、および.mslファイルを作成します。

実際、「ビルド時に」.csdl、.ssdl、および.mslが作成されると言って奇妙に感じたので、テストすることにしました。ファイルがTablePerTypeStrategy.xamlフローに基づいて生成されていることを知っているので、それを削除してアプリケーションをビルドしようとしました。成功しました。

「モデルからデータベースを生成する」を選択すると、TablePerTypeStrategy.xamlファイルが見つからないというエラーが発生しました。そのため、私は混乱しました。このテストから、アプリケーションをビルドするのではなく、データベースを生成しようとしたときに生成が行われていることは明らかです。

ここで何が欠けていますか?

4

2 に答える 2

19

* .csdl、*。ssdl、*。mslファイルを表示することに興味がある場合は、最初にプロジェクトを1回ビルドします。次に、以下のスナップショットに示すように、プロジェクト(edmxファイルを含む)を選択した後、ソリューションエクスプローラー(赤い矢印で表示)の[すべてのファイルを表示]ボタンをクリックします。

ここに画像の説明を入力してください

ディレクトリ構造はそれをと言いますobj\x86\Debug\edmxResourcesToEmbedobjすべてのエンティティフレームワーク固有のxmlファイルは、フォルダーに表示され、リソースとして埋め込まれているため、ビルド中に作成されます。

私のプロジェクトには2つのedmxファイルがEFCoding.edmxありました。つまり、Model1.edmx各タイプのファイルの2つのそれぞれのセットが表示されています。このビューが誰かに役立つことを願っています。

注:ここで提案されているように、EFモデルデザイナーのプロパティを微調整するだけで、これらすべてのEFメタ情報ファイルをプロジェクト出力ディレクトリに(埋め込む代わりに)簡単にコピーすることもできます。

于 2016-12-25T05:28:05.530 に答える
12

これらのファイル(.csdl、.ssdl、.msl)はビルド時に生成され、実行時にEntityFrameworkクラスで使用するためにリソースとしてアセンブリに埋め込まれます。モデルからデータベースを生成することは、データベース作成スクリプトを生成する別のプロセスです。

于 2012-05-11T14:21:07.473 に答える