キーワードはデータソースをサポートしていません
-
05-07-2019 - |
質問
デフォルトのメンバーシップデータベースを使用するasp.net-mvcアプリケーションがあります。 ADO.NET Entity Frameworkからアクセスしています。
これでIISに移行したいのですが、いくつかの問題が発生しました。 SQL Server Management Studioをインストールし、新しいDBを作成し、以前の.MDFファイルからすべてのデータをインポートする必要がありました。 (私が知る限り)やるべきことは、接続文字列に変更することだけです。しかし、私はこれを実際には経験しておらず、サポートされていないキーワード「データソース」を取得し続けています。例外。接続文字列は次のとおりです。
<add name="ASPNETDBEntities"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.EntityClient" />
アイデア、何が悪いのですか?
解決
お持ちののは有効なADO.NET接続文字列ですが、有効なEntity Framework接続文字列ではありませんではありません。
EF接続文字列は次のようになります。
<connectionStrings>
<add name="NorthwindEntities" connectionString=
"metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
provider=System.Data.SqlClient;
provider connection string="Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False""
providerName="System.Data.EntityClient" />
</connectionStrings>
EF接続文字列のすべての metadata =
および providerName =
要素が欠落しています......基本的には >プロバイダ接続文字列
部分。
EDMXデザイナーを使用すると、web.configまたはapp.configで有効なEF接続文字列が作成されます。
マーク
更新:OK、あなたがやろうとしていることを理解しています。2つ目の&quot; ADO.NET&quot;が必要です。 ASP.NETユーザー/メンバーシップデータベース専用の接続文字列。文字列は問題ありませんが、providerNameが間違っています-「System.Data.SqlClient」である必要があります; -この接続はENtity Frameworkを使用しません-&quot; EntityClient&quot;を指定しないでくださいそれなら!
<add name="ASPNETMembership"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
providerName = System.Data.EntityClient
==&gt;を指定した場合 Entity Framework 接続文字列(metadata =およびすべてを含む)。
必要な場合、 providerName = System.Data.SqlClient
==&gt;を指定します。 ストレートADO.NET すべてのEF追加なしのSQL Server接続文字列
他のヒント
この問題は、インデックスによってweb.config(またはapp.config)接続文字列を参照するときに発生する可能性があります...
var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;
ゼロベースの接続文字列は、構成ファイル内の常にであるため、必ずしもそうではありません。スタックの上位からデフォルトで他を継承します。
推奨されるアプローチは、名前で接続にアクセスすることです...
var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
または最初に設定ファイルのconnnectionStrings要素をクリアするには...
<connectionStrings>
<clear/>
<add name="MyConnection" connectionString="...
同じ問題が発生していました。
しかし、このコードはうまく動作します。
<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
Entity Frameworkの使用を開始したときにこの問題が発生しました。古いSQLサーバー接続をEntityFrameWork接続に変更しなかったときに発生しました。
解決策: web.configファイルを介して接続が作成されるファイルで&quot; add name =&quot; エンティティ&quot; connectionString = XYZ&quot ;、 正しい接続を参照していることを確認してください、私の場合はこれをしなければなりませんでした
public static string MyEntityFrameworkConnection
{
get
{
return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
}
}
接続を確立する必要があるたびにMyEntityFrameworkConnectionを呼び出します。
private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;
注:エンティティモデルをソリューションに追加すると、web.configファイルの接続が自動的に生成されます。
これは古い投稿であることは知っていますが、最近同じエラーが発生したので、それが価値があるので、別の解決策があります:
これは通常接続文字列エラーです。接続文字列の形式を確認してください。「エンティティフレームワーク接続文字列」を調べるか、上記の提案に従ってください。
ただし、私の場合、接続文字列は正常であり、エラーは完全に異なるものが原因で発生したため、これが誰かの助けになることを願っています:
-
最初にEDMXエラーが発生しました:EDMXに新しいデータベーステーブルがあり、データベースにテーブルが存在しませんでした(面白いのは、エラーがあまり明確ではなかったということです) EDMXまたは出力ウィンドウに表示されなかったため、代わりにVisual Studioの「警告」の下の「エラーリスト」ウィンドウに隠れていました。不足しているテーブルをデータベースに追加して、このエラーを解決しました。しかし、私は実際にストアドプロシージャを追加しようとして忙しく、まだ 'datasource'エラーが発生しているので、以下の解決方法を参照してください:
-
ストアドプロシージャエラー:ストアドプロシージャを追加しようとして、EDMXデザインウィンドウから追加するたびに「データソース」エラーが発生しました。解決策は、ストアドプロシージャを空白として追加することでした(ストアドプロシージャの名前と宣言は保持しましたが、ストアドプロシージャの内容を削除し、 'select 1'に置き換えて、EDMXへの追加を再試行しました)。出来た!おそらく、EFはストアドプロシージャ内の何かが気に入らなかったのでしょう。 EFにprocを追加したら、データベースのprocの内容を希望どおりに更新でき、動作し、「データソース」エラーが解決されました。
奇妙さ
同じエラーが発生していたので、接続文字列を次のように更新しました
<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
これを試して問題を解決します。