私は他の誰かが、私がやったのと同じ奇妙なシナリオをこのに走るだけの場合には、別の答えを捨てるつもりです。
他の人が言ってきたように、で起動するには、ADO接続文字列とEFの接続文字列が異なります。
ADO接続文字列には、1つの接続タイプから別の接続タイプへのセミコロン区切りフィールドが多数含まれていますが、通常「データソース= xxx」、「初期カタログ= yyy」などが表示されます。ではなく、「metadata = zzz」を参照してください。
EF接続文字列の構造は同じですが、「metadata = zzz」と「provider connection string = www」があります。「www」はエスケープされたADO接続文字列です。
だから、ADO接続文字列の通常の形式は次のとおりです。
data source=myserver;
initial catalog=mydatabase;
Persist Security Info=True;
User ID=myusername;
Password=mypassword;
MultipleActiveResultSets=True
EF接続文字列の通常の形式ではあるがこの問題に実行されている
metadata=res://*/MyDbContext.csdl|
res://*/MyDbContext.ssdl|
res://*/MyDbContext.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=myserver;
initial catalog=mydatabase;
Persist Security Info=True;
User ID=myusername;
Password=mypassword;
MultipleActiveResultSets=True;
application name=EntityFramework
"
ほとんどの人がいるように見えますEF接続文字列を切り取り、ADO接続文字列が必要な場所に貼り付けました。本質的には、私は同じことをしましたが、そのプロセスはすべてそれほど明確ではありませんでした。
私の場合、EFを使用するWebアプリケーションがあるため、web.configにEF接続文字列が正しく含まれていました。
デプロイメントパッケージを公開しました。デプロイメント時に使用する接続文字列を要求するプロンプトが表示されます。これらは、展開パッケージの生成されたSetParameters.xmlファイルに格納されます。
EF接続文字列を切り取り、パブリッシュダイアログの入力フィールドに貼り付けました。
Webアプリケーションをデプロイしてアクセスしようとしましたが、「キーワードがサポートされていません:メタデータ」というエラーが発生しました。
私が気づいていなかったのは、MSのパブリッシュツールがADO接続文字列を期待していて、それにEF接続文字列を作成するということです。言い換えれば
metadata=res://*/MyDbContext.csdl|
res://*/MyDbContext.ssdl|
res://*/MyDbContext.msl;
provider=System.Data.SqlClient;
provider connection string="
metadata=res://*/XxDbContext.csdl|
res://*/XxDbContext.ssdl|
res://*/XxDbContext.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=myserver;
initial catalog=mydatabase;
Persist Security Info=True;
User ID=myusername;
Password=mypassword;
MultipleActiveResultSets=True;
application name=EntityFramework
"
""
、埋め込まれたプロバイダの接続文字列は、EFの接続文字列ではなくADOた:
結果はSetParameters.xml、私の展開web.configファイルはこのように見えた接続文字列を持っていたということでしたEFがそれを使用してデータベースに接続しようとすると、このエラーが発生しました。
つまり、パブリッシュダイアログに接続文字列を貼り付けるときに、コピー元のweb.configの内容が次のものであっても、EF接続文字列ではなくADO接続文字列を貼り付ける必要があります。 EF接続文字列。
EF接続文字列のプロバイダ接続文字列フィールドからADO接続文字列を抽出することができます。これは、ローカル開発で行ったのと同じ接続を展開で使用している場合に必要です。
手動で接続しようとしましたか?あなたは信任状をそのように確認しましたか? –