web-dev-qa-db-ja.com

エンティティフレームワーク-CSDL、SSDL、およびMSLファイル

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

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

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

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

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

15
Diego

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

10
Dave Swersky

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

enter image description here

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

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

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

15
RBT