1

My MyModel.edmxがアセンブリDataAccess.dllにあります。このアセンブリは、私のWebプロジェクト(C#)で参照されていますEntityDataSource - Entity Frameworkを使用しているときに、指定されたメタデータソースを読み込めません。

エンティティの接続文字列が問題です。

これは私が私のwin.configにapp.configをからコピーされたものです:

<add name="MyModelEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

問題は、私は、メタデータソースがロードできないというエラーを取得しています。

私のモデル名が正しいと確信しています。私はReflectorでDLLをチェックしました。

だから、私は、接続文字列に私のdllを含める必要があります考えています、と私は、この

<add name="MyModelEntities" connectionString="metadata=res://DataAccess.dll/MyModel.csdl|res://DataAccess.dll/MyModel.ssdl|res://DataAccess.dll/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

を試してみました。しかし、私はDataAccess.dllは、アセンブリの列挙のリストで見つけることができないというエラーを取得しています

dllの中で私のモデルを直接参照する方法はありますか? 私のdllはdllという名前はありません。

ご迷惑をおかけして申し訳ございません。

おかげ

+0

私は、接続文字列にアセンブリ名を追加することなく、.dll拡張子を持つ、私のために働くことを見つける - 試みる... // DATAACCESS/...ではなく... //DataAccess.dll/....もちろん、*私のためにも働くので、あなたは別の手続きを持つかもしれませんm。 – JimMat

+0

私はこれまで、EFを使って4〜5のプロジェクトを始めました。私は決して何も修正しませんでした。物事はちょうど働き始めるでしょう。私はプロジェクトを作り直すか、そのようなことをするだろう。そして、私は本当にこれについて不安を感じる...それはいつでもナンセンスエラーメッセージをスローし始めるかもしれない作業中に落ちた... – bobetko

答えて

0

は、私は、Entity Frameworkの5のプロジェクトやデータベースを再作成し、それがしばらくの間、仕事になって、bobetkoと同様の経験をしました。 (VS 2013 ExpressとSQL Server 2008のR2)

その後、私はこれをしなかったし、それはすべての私の問題を修正...

出力ディレクトリにモデルとマッピングファイルをコピーするには

  1. ダブルクリッは、ソリューションエクスプローラで.edmxファイルをクリックします。
  2. ファイルがエンティティデザイナーで開きます。
  3. デザインサーフェスの空白部分を右クリックし、 プロパティを選択します。
  4. Visual Studioのプロパティウィンドウが表示されます。
  5. メタデータ成果物処理プロパティの値を を出力ディレクトリにコピーするように設定します。

http://msdn.microsoft.com/en-us/library/vstudio/cc716709(v=vs.100).aspx

私はVSは、同じデータベースへの複数の接続を溶液中で複数のプロジェクトで混乱してしまうと思います。上記の修正は私のためにそれを解決し、私の壊れたプロジェクトを修理しました。

0

これは役に立たないかもしれませんが、参照されているアセンブリでメタデータリソースがどのように動作するかについて、いくつかの点を明らかにしてください。

私は同じ問題を抱えていました。元の質問と試行錯誤の間にJimMatのコメントを読んだ後、Entityはメタデータ文字列の修飾された名前であることを知っていました。

(ブルースカイで述べたように)メタデータ成果物処理が、これはそのアセンブリのためのDLLにCSDL/SSDL/MSLファイルを焼くように、出力アセンブリに埋め込みコードに設定されている、とにコピーされていることを確認してください参照しているプロジェクトのbinディレクトリ。解決策を再構築します。

  • resが:// - ディスク上のファイルへのパスではなく、プロジェクトの埋め込みリソースで探すようにエンティティを伝え
  • ... // */... - アセンブリ名にワイルドカードを使用します
  • .../Namespace.Of.MyModel.csdl - リソースの完全修飾名、アセンブリ名を省略しています。

例:私のDbContextはの完全修飾名を持つ「データ」と呼ばれるプロジェクト/アセンブリ内にある場合は「Data.Staging.Context、」私のメタデータが

metadata=res://*/Staging.Context.csdl|res://*/Staging.Context.ssdl|... 

かのようになり、 JimMatによると:

metadata=res://Data/Staging.Context.csdl|res://Data/Staging.Context.ssdl|... 
関連する問題