2011-07-19 2 views
1

私はそうのようなMVCプロジェクトのEFの接続文字列があります。参照EDMX

たconnectionString = "メタデータ= resを:// /Models.db.csdl|res://を/データソース= localhost;初期カタログ=システム名;統合セキュリティ= True; MultipleActiveResultSets = True " "providerName =" System.Data.EntityClient "

2番目のプロジェクトを追加して参照するまでedmxを含むMVCプロジェクトを実行しましたが、実行時に次のように表示されます。

指定されたメタデータパスは無効です。有効なパスは、既存のディレクトリ、拡張子 '.csdl'、 '.ssdl'、または '.msl'を持つ既存のファイル、または埋め込みリソースを識別するURIのいずれかでなければなりません。

ポストの後で投稿を読んだことがありますが、MVCプロジェクトでメタデータを正しく参照する方法がわかりません。誰かが私を正しい方向に向けることができますか?私は、展開やデバッグ中に壊れるような特殊な接続文字列を作成したくありません。

答えて

2

リソースの形式は次のとおりです。//*/bah.msl:

Metadata=res://<assemblyFullName>/<resourceName>. 

怠惰な方法は、ワイルドカードの解像度を使用することです。 binディレクトリ、呼び出しアセンブリ、および参照アセンブリからモデル/マッピングファイルをロードします。あなたのケースでは

res:///Models.db.csdl|res:///Models.db.ssdl|res://*/Models.db.msl 

が正しくないです、試してみてください。

res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl 

完全な文字列:

connectionString="metadata=res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=SystemName;Integrated Security=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" 

また、あなたが高速である絶対参照を(使用することができますしかし、私はこれを仮定しているあなたのためにはるかに痛いです):

Metadata=res://<DLL>, <Version>, neutral, <SN>/Models.db.csdl|Models.db.ssdl|Models.db.msl 
+0

私は// * /文字列のVSがクラッシュするとき。 Microsoft Visual Studioに問題が発生したため、終了する必要があります。 – user536698

+1

上記のconnectionStringを使用しましたか?あなたの 'provider connection string =" 'を' provider connection string = '' – Nix

+0

と置き換えたことを確認してください...助けてくれてありがとう! – user536698