デフォルトのメンバーシップデータベースを使用する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接続文字列ですが、それは[〜#〜] not [〜#〜]有効な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=
要素が欠落しています。基本的に、provider connection string
部分に含まれるものだけがあります。
EDMXデザイナーを使用すると、web.configまたはapp.configに有効なEF接続文字列が作成されます。
マーク
更新:OK、私はあなたがやろうとしていることを理解しています:ASP.Net User /会員データベースのために2番目の「ADO.NET」接続文字列が必要です。文字列は問題ありませんが、providerNameは間違っています-「System.Data.SqlClient」である必要があります-この接続はENtity Frameworkを使用しません-その場合は「EntityClient」を指定しないでください!
<add name="ASPNETMembership"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
providerName=System.Data.EntityClient
==> Entity Framework接続文字列(metadata =およびすべてを含む)を指定した場合。
必要に応じてproviderName=System.Data.SqlClient
==> ストレート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" />
私はこれが古い投稿であることを知っていますが、最近同じエラーを受け取ったので、それが価値があるもののために、別の解決策があります:
これは通常、接続文字列エラーです。接続文字列の形式を確認してください。「エンティティフレームワーク接続文字列」を検索するか、上記の提案に従ってください。
しかし、私の場合、私の接続文字列は問題なく、エラーは完全に異なるものによって引き起こされたので、これが誰かを助けることを願っています:
最初にEDMXエラーが発生しました:EDMXに新しいデータベーステーブルがあり、そのテーブルがデータベースに存在しませんでした(面白いのは、私のEDMXまたは出力ウィンドウではなく、「警告」の下の「エラーリスト」ウィンドウでVisual Studioに隠れています。不足しているテーブルをデータベースに追加して、このエラーを解決しました。しかし、私は実際にストアドプロシージャを追加しようとして忙しく、「データソース」エラーが発生するので、以下の解決方法を参照してください:
ストアドプロシージャエラー:ストアドプロシージャを追加しようとして、EDMXデザインウィンドウから追加するたびに、「データソース」エラーが発生しました。解決策は、ストアドプロシージャを空白として追加することでした(ストアドプロシージャの名前と宣言は保持しましたが、ストアドプロシージャの内容を削除し、 'select 1'に置き換えて、EDMXへの追加を再試行しました)。動いた!おそらく、EFはストアドプロシージャ内の何かが気に入らなかったのでしょう。 EFにprocを追加したら、データベースのprocの内容を希望どおりに更新でき、動作し、「データソース」エラーが解決しました。
奇妙さ
Entity Frameworkの使用を開始したときにこの問題が発生しました。古いSQLサーバー接続をEntityFrameWork接続に変更しなかったときに発生しました。
解決策:web.configファイル「add name = "Entities" connectionString = XYZ "」を介して接続が作成されるファイルで、正しい接続を参照していることを確認してください。この
public static string MyEntityFrameworkConnection
{
get
{
return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
}
}
接続を確立する必要があるときはいつでもMyEntityFrameworkConnectionを呼び出します。
private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;
注:エンティティモデルをソリューションに追加すると、web.configファイルの接続が自動的に生成されます。
同じエラーが発生していたので、接続文字列を次のように更新しました。
<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
これを試して問題を解決します。