18

Entity Frameworkに深刻な問題があり、何が起こっているのか理解できないようです。

提供されている多くのオプションを試しました:MetadataException:指定されたメタデータリソースと、http://blogs.teamb.com/craigstuntz/2010/08/13/38628/にある有名なCraigStuntzのブログ投稿を読み込めません

簡潔にするために、3つのプロジェクトがあります。

Funscribe.Data(ここにあるEDMXファイル)

Funscribe.Console(コンソールアプリ)

Funscribe.Web(MVC 3アプリ)

元々はMVCアプリでしたが、最近この新しいコンソールプロジェクトを追加しました。

web.configから接続文字列をコピーして、app.configに適用しました。

<add name="FundirectoryEntities" connectionString="metadata=res://*/Fundirectory.csdl|res://*/Fundirectory.ssdl|res://*/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

私のmvcアプリは引き続き機能しますが、コンソールアプリを実行すると、恐ろしいことになります。

指定されたメタデータリソースを読み込めません。」

接続文字列をワイルドカード設定に変更してみました。

<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

次のようになります 。指定されたデフォルトのEntityContainer名「FundirectoryEntities」がマッピングおよびメタデータ情報に見つかりませんでした。

アセンブリを指定するように変更してみました。

<add name="FundirectoryEntities" connectionString="metadata=res://Funscribe.Data.dll/Fundirectory.csdl|res://Funscribe.Data.dll/Fundirectory.ssdl|res://Funscribe.Data.dll/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

取得: アセンブリ'Funscribe.Data.dll'を解決できません。

私はここで何をすべきか迷っています。このプロジェクトをVisualStudio2012にアップグレードしました(VS 2012に変換した後、この新しいコンソールアプリを紹介します)。

また、Funscribe.Data.dllがコンソールプロジェクトのbinフォルダー内にあることに気付きました。これらのファイルを手動で削除して、再作成されるのを確認しました。そして、私を困惑させるのは、Webアプリが引き続き正常に機能することです。

すべてのプロジェクトは.NET4.0上にあります。コンソールアプリは、クライアントプロファイルバージョンではなく.NET4.0を使用します。

この問題に関する助けは大歓迎です。

4

5 に答える 5

21

Model.edmxSimpleと呼ばれるアセンブリで呼び出されるEntityFrameworkモデルを持つアプリケーションのメタデータパラメーターは、次のMvc.Data.dllようになります。

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=
            res://Simple Mvc.Data.dll/Model.csdl|
            res://Simple Mvc.Data.dll/Model.ssdl|
            res://Simple Mvc.Data.dll/Model.msl;provider= <!-- ... -->

したがって、実行時に必要なEDMXの3つの部分のそれぞれに1つの参照があることがわかります。これらはすべて同じように機能するので、最初の部分をさらに詳しく調べてみましょう。CSDLリファレンスは次のようになります。

        res://Simple Mvc.Data.dll/Model.csdl

それは3つのことを指定します:

  • リソースからCSDLを読み込んでいます。それは"res://" part.

  • リソースを含むアセンブリの名前"Simple Mvc.Data.dll"。アセンブリに強い名前が付けられている場合は、ここで、その冗長な栄光の中で強い名前を指定できます。

  • リソース自体の名前、"Model.csdl"。これをEDMXまたはモデル名と混同しないでください。この場合、拡張子を除いて同じですが、常にそうであるとは限りません。

リソースの名前がモデルと同じでない場合、またはアセンブリがロードされない場合は、おそらく失敗します。

詳細については、これを確認してください。EntityFramework接続文字列のトラブルシューティング

これがお役に立てば幸いです。

于 2013-02-01T17:32:39.773 に答える
2

私の場合、connectionStringはリソースファイルを見つけようとしていますが、見つけることができません。私が自分の問題を解決するためにしたことは次のとおりです。

[EDMX図]を右クリック->[プロパティ]->[接続]->[メタデータアーティファクト処理]->[出力ディレクトリにコピー]に変更して再構築します。

これにより、メタデータ接続文字列のパスポイントが、彼が見つけようとしているリソースに変更されます。

于 2015-07-21T09:22:01.467 に答える
2

VisualStudioでソリューションを再構築することは私を助けました。

ビルド->リビルドにあります

于 2017-12-12T12:46:09.190 に答える
0

MetadataException:指定されたメタデータリソースを読み込めません

これは、アプリケーションがEDMXをロードできないことを意味します。

これを引き起こす可能性のあるものがいくつかありますが、おそらく接続文字列が無効であることが原因です。

可能な解決策:

1.接続文字列を確認します2.model.edmxを更新します3.model.edmxで[データベースからモデルを更新]オプションを選択します

http://mvc4asp.blogspot.in/

于 2014-09-08T12:42:26.760 に答える
0

私の場合、プロジェクト内のEDMXファイルを削除し、新しい名前で再作成します。以前はHome_Modelでしたが、後でHome_Costになりました。以下のコードを呼び出そうとすると、「指定されたメタデータリソースを読み込めません」と表示されます。エラー。/////

    using (var currentEntities = new masterEntities())
    {
        currentUser = currentEntities.Home_User.FirstOrDefault(
            x => x.UserLoginAccount == userLoginAccount && x.UserPwd == userPwd);

    }

//// Web.configで、メタデータ構成をHome_ModelからHome_Costに変更します。

その後、それは動作します。明らかに、edmxを削除/作成したときに、VS2015(私のバージョン)はweb.configを更新しませんでした。

于 2017-06-06T09:20:45.103 に答える