キーワードはサポートされていません

asp.net connection-string entity-framework

質問

私はデフォルトの会員データベースを持つasp.net-mvcアプリケーションを持っています。 ADO.NET Entity Frameworkからアクセスしています。

今、私はそれをIISに移行したいのですが、いくつかの問題が現れました。 SQL Server Management Studioをインストールし、新しいDBを作成し、以前の.MDFファイルのすべてのデータをそこにインポートする必要がありました。 (私の知る限りでは)やるべきことは、接続文字列に変更することだけです。しかし、私は実際にはこれに慣れていないので、キーワードnot supported: 'data source'を取得し続けます。例外。これが私の接続文字列です。

<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=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

EF接続文字列にmetadata=要素とproviderName=要素がすべて欠けています......基本的には、 provider connection string部分に含まれているものだけがありprovider connection string

EDMXデザイナを使用すると、web.configまたはapp.configに有効なEF接続文字列が自動的に作成されます。

マーク

更新:さて、私はあなたが何をしようとしているのか理解しています:あなたはASP.NETユーザー/会員データベースのためだけに2番目の "ADO.NET"接続文字列が必要です。あなたの文字列はOKです、しかしproviderNameは間違っています - それは "System.Data.SqlClient"である必要があります - この接続はENtityフレームワークを使用しません - それでそれのために "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 =など)を指定した場合。

すべてのEFを追加せずに、 providerName=System.Data.SqlClient ==> ストレートADO.NET 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="...


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ