これは何度も聞かれたことに気づきましたが、私の問題の底をつかむことができないようです。次のエラースタックが表示されます。
Dllを反映すると、次のように表示されます
読み取り http://blogs.teamb.com/craigstuntz/2010/08/13/38628/ csdl、msl、ssdlファイルがここに表示されることを期待することを示唆していますが、そうではありません。ただし、obj\Debug\edmxResourcesToEmbedには存在します。
それにもかかわらず、私はこれを行うことでweb.configにどこを見るかを明示的に伝えようとしました:
...connectionString="metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider ... />
Dllが見つからないというエラーがスローされます。
アセンブリ 'DllName.dll'を解決できません。
この未解決SO質問 Assembly Model.dllを解決できません
私が最後に試したのは、メタデータの行を次のように変更することでした。
...connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider ... />
これは私が使用していないSQL CEに関するメッセージを投げました-これを回避する方法はありますか?
他に試すことができるものはありますか?または誰が私が間違っているのかを見ることができますか?いくつかの追加の詳細:
「埋め込みリソース」に設定されたEF 6 EDMXの使用
出力ディレクトリにコピー:「コピーしない」
最後にこれについて-EDMXをEmbedded ResourceからEntityDeployに設定すると、これはローカルで機能しますが、ビルドサーバー上でビルドできません。これはSO質問とまったく同じエラーをスローするためです。
入力ファイルのリソースとして埋め込む概念スキーマノードが見つかりませんでした
しかし、修正は役に立たないようで、残念ながらサーバーに.NET 4.5をインストールできません。
だから私はこれの一番下に到達した、部分的にこれは私のせいだと思う。他の人に役立つ場合に備えて、以下で遭遇した各問題の解決策を示します。
指定されたメタデータリソースの問題をロードできません
これは、edmxモデルの 'Metadata Artifact Processing'設定を "EntityDeploy"から "Embedded Resouce"に設定したことが原因でした。
そのため、edmxファイルファイル全体をdllに埋め込み、代わりにssdl、msl、csdlファイルを生成しませんでした。
これを機能させてこれらのファイルを正しく生成するには、EntityDeployに設定する必要があると思います。ここで完璧な意味と私たちの悪いことになります。
アセンブリ 'DllName.dll'を解決できません
これは、上のコメントでAndrewによって解決されました。
入力ファイルのリソースとして埋め込む概念スキーマノードが見つかりませんでした
この問題全体の鍵はこれです。ビルドサーバーは現在Windows 2003上にあるため、.NET 4.5をインストールできません。VS2013の.NET 4.0で実行されているEF 6.1をローカルで使用していました。
しかし、何らかの理由で、4.5機能のいずれも使用せず、.NET 4フレームワークをターゲットにしていない場合でも、ビルドサーバーに.NET 4.5をインストールしてビルドする必要があるようです。
EFを4.3にダウングレードすると、短期間でこの問題が解決されました。理想的ではありませんが、うまくいきました。
私も同じ問題を抱えています。 EFモデルを含む.edmxファイルを別のアセンブリに移動した後、「指定されたメタデータリソースを読み込めません」というエラーが原因でした。
EFバージョン6.1
解決:
古い値:
metadata=res://*/Data.DataModel.csdl
新しい値:
metadata=res://*/DataModel.csdl
最初は、.edmxはプロジェクトのフォルダーの下にあり、プロジェクトのルートに移動しました。
アセンブリの完全修飾名とその中のモデルファイルへのパスを指定する必要があります(/
)、dll名ではありません
connectionString="metadata=res://Name.Of.The.Assembly, Culture=neutral, PublicKeyToken=8e2e51fcf4cf363e/Payment.PaymentModel.csdl|.........."
ssdl
およびmsl
についても同じ
MetaDataを変更する
connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;
に
connectionString="metadata=res://*/;
上記の変更により問題が修正されます
私は同じ問題を抱えていました
System.Data.MetadataException:指定されたメタデータリソースをロードできません
以前に生成された接続文字列には、edmxのすべての名前が含まれていました。接続文字列からすべてのモデル名を取り出し、メタデータに以下の文字列のみを残しました
"metadata=res://*/;provider=System.Data.SqlClient;provider
これは私のために働いた。
解決 :
1)Visual Studioから.edmxファイルを開きます。
2)任意の場所をクリックします。
3)edmxプロパティウィンドウが表示されます。
4)名前空間を正しいフォルダー名に変更します。
5) 1 : https://i.stack.imgur.com/6sZvo.png (詳細については画像を選択してください)。
dotnet
CLIを使用している場合新しいdotnet build
ツールを使用してEntity Framework 6.xベースのプロジェクトをビルドする新しいビジターの場合、現在 メタデータは埋め込まない が最終ビルドにあることを知ってください。したがって、VS内から実行する場合は実行されますが、CIスクリプトがdotnet
を使用する場合、msbuild
に戻るまでサーバーで失敗します。私見、これはバグであり、ツールはこれを処理する必要があります。必要に応じて、GitHubスレッドでチャイムできます。
Entity Framework
接続文字列が有効データベースを指していたのに、実際にはこの同じエラーを受け取りましたが、それはincorrrectデータベースでした。
SQL Serverに次のインスタンスがある場合:
接続文字列が、.EDMX
が接続され、生成された同じデータベースを指していることを確認してください。十分明らかなようですが、1つのプロジェクトから別のプロジェクトにEF
接続設定をコピーすると、このエラーが発生し、最終的な結果はUnable to load the specified metadata resource
メッセージでした。正しいデータベースとアセンブリを指す正しい接続文字列を使用すると、エラーは解決しました。
最も簡単な方法は、.config
の隣にある.EDMX
ファイルで作成された元接続文字列を使用し、微妙または軽微な脱落/間違いを確実にするために必要な場所にコピーすることです。 EF
が正しくロード/接続されない原因となります。
同じエラーが発生していました。私の接続文字列は次のとおりでした
<add name="EmployeeDbContext" connectionString="metadata=res://*/EmployeeModel.csdl|res://*/EmployeeModel.ssdl|res://*/EmployeeModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Sample;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
私はそれを次のように変更し、問題を修正しました
<add name="EmployeeDbContext" connectionString="server=.; database=Sample; integrated security=true;"
providerName="System.Data.SqlClient"/>
また、edmxファイルをWebアプリケーションからデータレイヤーに移動するとき(web.config-connection/app.config-connection)、データレイヤーとwebserviceレイヤーの接続文字列を変更することに注意してください。 (そうでない場合は、2つの異なる接続文字列を使用します。これにより、このような問題が発生します)
Visual Studio 2013でEF6を使用しました。次の手順を実行して、これを解決しました。
ProviderManifestToken="2008"
それがあなたのために働くことを願っています。
私はこの問題にぶつかり、何度も何度も噛みついてきました。それをどうやって修正するかをいつも忘れています。
必要なのは、開始ページとしてdefault.aspxを設定することだけです。
明らかにこれはすべての人に役立つわけではありませんが、私の場合、私の設定、接続文字列をチェックする道を進んでいます...
これが誰かを助けてくれることを願っています。あるいは、少なくとも次回グーグルを検索するときには、修正が見つかるでしょう。 :)
私はコードを他の開発者と共有していますが、彼はこの問題を抱えていました。接続文字列の違いはありません。すべてのファイルはOKです...私は設定して修正しました
これは、個々のファイル(CSDL/MSL/SSDLファイル)が「出力ディレクトリにコピー」を使用したときに出力ディレクトリに作成されたため、うまくいったと思います。どうやら、組み込みバージョンが機能するために必要なバグがあったようです。お役に立てれば :)
接続文字列「metadata = res」はEdmx名と同じである必要があります。例えば
metadata=res://*/EmployeeModel.csdl
このEDMX名はEmployeeModelでなければなりません
私の経験を共有するとどうやって解決したかにしたい。私の場合、私はコピーと貼り付け my 接続文字列 on 運用サーバーであるために起こります。私のアプリケーションはEntity frameworkを使用していました。
問題はメタデータにありました
エンティティモデルを「BetModel」と命名しましたが、接続文字列では「Entity」-「res:///Entity.csdl|res:/」を使用していました//Entity.ssdl|res://*/Entity.msl 'on' metadata '(理由は、コピーして貼り付けたためです)。
だから私の間違ったConnectionStringは:
connectionString="metadata=res://*/Entity.csdl|res://*/Entity.ssdl|res://*/Entity.msl;provider=System.Data.SqlClient;provider connection string="data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework""
修正されたConnectionStringは次のとおりでした。
<add name="BetEntities" connectionString="metadata=res://*/BetModel.csdl|res://*/BetModel.ssdl|res://*/BetModel.msl;provider=System.Data.SqlClient;provider connection string="data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
ソース管理からコードをプルダウンした後、開発マシン間を移動するときに、これに何度か遭遇しました。通常、EDMXファイルを含むプロジェクトを明示的に再構築する必要があります。