web-dev-qa-db-ja.com

System.Data.MetadataException:指定されたメタデータリソースをロードできません

私の接続文字列は次のとおりです。

<add name="RollCallDBEntities" connectionString="metadata=res://System.Engine/RollcallNS.csdl|res://System.Engine/RollcallNS.ssdl|res://System.Engine/RollcallNS.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=user;Password=password;Server=127.0.0.1;Direct=True;Sid=ORCL&quot;" providerName="System.Data.EntityClient" />

私のコードは次のとおりです。

using (var db= new RollCallDBEntities()) //ok
{
   var query = db.TBL_ROLLCALL.ToList(); //Unable to load the specified metadata resource.
}

私のアセンブリ:

System.Engine

誰にもアイデアはありますか?

これらのリンクは私の問題を解決しませんでした:
MetadataException:指定されたメタデータリソースをロードできません
エンティティフレームワーク指定されたメタデータリソースをロードできません
Entity Framework:指定されたメタデータリソースをロードできません
指定されたメタデータリソースをロードできません

20
Meysam Savameri

http://forums.devart.com/viewtopic.php?t=22092 を参照してください。

それでも解決しない場合は、次を指定してください。

  • aDO.NET Entity Data Model(.edmx)または Devart Entity Model (.edml)で作業していますか?
  • モデルファイルのビルドアクションプロパティの値
  • モデルのメタデータアーティファクト処理プロパティの値
  • dotConnect for Oracleのビルド番号(x.xx.xxx)
  • visual Studioのバージョン
  • Pawelのアドバイスに従って、アセンブリにリソースが埋め込まれているかどうかを確認してください
5
Devart

このような例外が発生していました。問題は、.edmxファイルとEFの名前の変更を忘れたWeb.configファイルの接続文字列:

metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;
57

これを解決した最も簡単な解決策は、objフォルダーを削除する binフォルダーと同じレベルにあり、アプリケーションを再実行するでした。必要以上に長い

5
AltF4_

WebSiteレベルのプロジェクト、DataAccessレベルのプロジェクトなどの複数のプロジェクトを含む1つのソリューションでEntityFramework 6.0を使用しました。私のソリューションでは、DataAccessレベルのプロジェクトで移行を行う必要があります。

パッケージマネージャーコンソールでAdd-Migrationコマンドを実行すると、「指定されたメタデータリソースを読み込めません」と表示されます。

最後に、WebSiteレベルのプロジェクトを「スタートアップ」プロジェクトとして設定し、このトリガーが上記の例外であることがわかりました。システムは最初にスタートアッププロジェクトの接続文字列設定を自動チェックするようです。そして、WebSiteレベルのプロジェクトで設定されたデータ接続文字列は

"metadata = res:// /ApplicationEntities.csdl|res:///ApplicationEntities.ssdl | res://*/ApplicationEntities.msl; provider = System.Data.SqlClient; provider connection string = 「データソース= .;初期カタログ= YourDatabaseName;統合セキュリティ= True; MultipleActiveResultSets = True; App = EntityFramework」

これは最初のコードでは正しくありません。

正しい接続文字列は次のとおりです。

「データソース= .;初期カタログ= YourDatabaseName;統合セキュリティ= True」

結論として、ソリューションの「スタートアップ」プロジェクトのweb.configの「connectionStrings」セクションを常に最初に確認してください。

2
ChinaHelloWorld

Devart mysqlconnectで同様の製品を使用しました-これが役立つかもしれません。

.edmlファイルを含み、他のプロジェクトから参照されるEFModelsというプロジェクトがあります。

EFModelsを参照したプロジェクトのリリースバージョンにはEFModels.dllが含まれていますが、EfModels.dllのデバッグバージョンよりもサイズがはるかに小さい(127kb対437kb)ことに気付きました。 EFModels.dllをデバッグバージョンからリリースバージョンに移動すると、何らかの理由でリリースバージョンにssdlなどが埋め込まれなかったため、問題が解決しました。

0
Watson

また、この問題に遭遇しました。これは、EDMXファイルを含むプロジェクトを参照するのを忘れたためです。

0
maria

また、この問題に遭遇しました。これは、Entity Framework Model FirstからEntity Framework Code Firstに移行し、EDMX接続文字列を「通常の」接続文字列に変更するのを忘れていたためです。

0