32

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

<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: 指定されたメタデータ リソース
エンティティ フレームワークを読み込めません
指定されたメタデータ リソースを読み込めません エンティティ フレームワーク: 指定されたメタデータ リソース
を読み込めません 指定されたメタデータ リソースを読み込めません

4

14 に答える 14

74

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

metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;
于 2013-11-05T19:03:05.843 に答える
6

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

これで問題が解決しない場合は、以下を指定してください。

  • ADO.NET エンティティ データ モデル (.edmx) またはDevart エンティティ モデル(.edml) を使用していますか?
  • モデル ファイルの Build Action プロパティの値
  • モデルの Metadata Artifact Processing プロパティの値
  • dotConnect for Oracle のビルド番号 (x.xx.xxx)
  • Visual Studio のバージョン
  • Pawelのアドバイスに従って、リソースがアセンブリに埋め込まれているかどうかを確認します
于 2013-08-26T10:06:42.523 に答える
2

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

Package Manager Console で Add-Migration コマンドを実行すると、「指定されたメタデータ リソースを読み込めません」というメッセージが表示されます。

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

"metadata=res:// /ApplicationEntities.csdl|res:// /ApplicationEntities.ssdl|res://*/ApplicationEntities.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=YourDatabaseName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""

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

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

"Data Source=.;Initial Catalog=YourDatabaseName;Integrated Security=True"

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

于 2016-03-17T05:13:50.127 に答える
0

私はdevart mysqlconnectで同様の製品を持っていました-多分これが役立つかもしれません。

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

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

于 2018-02-21T20:16:58.137 に答える
0

メタデータ ファイルの正しいパスがわからない場合は、アプリケーションをコンパイルし、JetBrains の dotPeek を使用して DLL を開き、Resources フォルダーを調べて .csdl などのファイルを見つけることで確認できます。

于 2015-02-27T00:14:41.343 に答える