2012-03-26 10 views
0

私はMicrosoft MVCアプリケーションのモデルの最初のアプローチを行っています。このソリューションの名前は "TutorialPile"で、DomainとWebUIという2つのプロジェクトに分かれています。 WebUIプロジェクトにチュートリアルオブジェクトのコントローラを追加しようとしましたが、ドメインクラスとDBコンテキストを選択しました。ただし、「TutorialPile.Tutorialのメタデータを取得できません。指定したメタデータ・リソースをロードできません。」というエラーが表示されます。MVC Entity Framework接続文字列が他のプロジェクトを参照しています

オンラインで見ると、web.configファイルの接続文字列でedmxオブジェクトが見つからないようです。私はDomainプロジェクトのapp.configファイルから接続文字列をコピーしましたが、それでも動作しません。次に、web.configファイルの接続文字列を示します。

ここにコピーした接続文字列があります。

<add name="TutorialPileDBEntities"  connectionString="metadata=res://*/TutorialPile.csdl|res://*/TutorialPile.ssdl|res://*/TutorialPile.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

変更する必要があるアイデアはありますか?

答えて

0

  1. EDMXファイルのビルドアクションが(ファイルを選択し、[プロパティ]ウィンドウにアクセスしてください)EntityDeployに設定されている...ていることを確認します。
  2. WebUIプロジェクトがドメインプロジェクトを参照しています
  3. WebUIプロジェクトの接続文字列を編集して、他のプロジェクトのメタデータを参照します。 *を使用すると、任意のdllから来る可能性があります。しかし、あなたのedmxファイルがフォルダ内にある場合は、階層をマップする必要があります。

例:
EDMXへのパス: TutorialPile.Domain /モデル/ TutorialPile.edmx
接続文字列: RES://*/Model.TutorialPile.csdl | RES:// */Model.TutorialPile.ssdl | RES://*/Model.TutorialPile.msl

がさらに良い:

documentationは、あなたが(のようなものを、アセンブリの完全な名前を使用して、(パフォーマンス上の理由から)アセンブリを指定示唆します:AdventureWor ks、1.0.0.0、ニュートラル、a14f3033def15840)。私はそれを動作させることができませんでした。しかし、アセンブリの名前だけを使用して私のために働く。したがって、ドメインプロジェクトがTutotialPile.Domain.dllを出力する場合は、

res://TutorialPile.Domain/Model.TutorialPile.csdl | res://TutorialPile.Domain/Model.TutorialPile.ssdl | res://TutorialPile.Domain/Model.TutorialPile.msl

関連する問題