7

これは数回尋ねられましたが、提案をうまく機能させることができませんでした。

ローカルに構築して Azure にデプロイした Web サイトと SQL データベースがあります。データベースは、Web サイトにリンクされたリソースです。Web サイトを閲覧でき、ADO.Net と標準の接続文字列を使用して、データベースに接続してクエリを実行することもできます。

問題は、Entity Framework を使用して接続しようとすると、Keyword not supported: 'metadata' が表示され続けることです。複数のアクティブなレコード セットを削除し、" を ' に置き換えてみましたが、うまくいきませんでした。

4

2 に答える 2

26

DatabaseFirst アプローチ用に、Azure portal で定義した接続文字列を次に示します。

metadata=res://*/mySuperModel.csdl|res://*/mySuperModelModel.ssdl|res://*/mySuperModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:myServerName.database.windows.net,1433;Initial Catalog=myDatabaseName;User ID=myUserName@myServerName;Password=myPasswordHere;"

あなたのものと比較して、Azure ポータルの接続タイプが「カスタム」であることに注意してください。

于 2012-12-17T15:05:31.580 に答える
2

OPと同じ問題がありましたが、彼の解決策はうまくいきませんでした。

これは接続文字列の問題でしたが、引用符の問題ではありませんでした。

解決するのに2日かかったので、おそらくこれは他の誰かを助けるでしょう:

[Azure でホストされている場合の ASP.NET MVC 4.5/Entity Framework 5.0 アプリケーションで機能する接続文字列(SQL Server 2012 に対してローカルで開発していますが、データベースを Azure SQL Database に移行します ( SQL Database Migration Wizardを使用))。最初にデータベースを使用して.edmxファイルを作成しています(データベースから(データ)モデルを生成します)]は次のとおりです。

<add name="MYPROJECTENTITIES" connectionString="**metadata=**res://*/MODELS.MYPROJECTMODEL.csdl|res://*/MODELS.MYPROJECTMODEL.ssdl|res://*/MODELS.MYPROJECTMODEL.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:B6JD5K5EP4.database.windows.net,1433;Initial Catalog=MYPROJECT_DB;Integrated Security=False;User ID=MYPROJECT@B6JD5K5EP4;Password=MYPASSWORDABC123;**MultipleActiveResultSets=True**;Encrypt=True;TrustServerCertificate=False&quot;" providerName="System.Data.EntityClient"/>

大文字のテキストは、私の Azure 情報です。明らかに、代わりに独自のものを使用する必要があります。

接続文字列のこの部分は私に悪夢を与え、それがあなたの問題を引き起こしている可能性もあります:

res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl

これらの参照は正確に正しくなければなりません。繰り返しますが、これらの参照は正確でなければなりません!!

2008 年のこの記事(「Entity Framework 接続文字列のトラブルシューティング」)を読んだ後、.NET Reflector を使用して MyProjectModel.dll (私の .dll の名前 (プロジェクトでは異なる可能性があります) の名前) を調べました。接続文字列 (Entity Framework によって自動的に生成されました!) が間違っていました. プレフィックスが含まれていませんでした. Models.プレフィックスを追加するとすぐに (.csdl/.msl/.ssdl の名前が付けられます)私の .dll の内部 (おそらくあなたのものとは異なる)), すべてうまくいきました.あなたの .dll の中を見て、名前が一致するかどうかを確認してください.そうでない場合は、.dll に表示されるものと一致するように変更してください.(上記の記事を読んでください)私が言っていることが十分に明確でない場合。)

于 2012-12-29T04:21:10.850 に答える