web-dev-qa-db-ja.com

キーワードはデータソースをサポートしていません

デフォルトのメンバーシップデータベースを使用する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" />

アイデアは何ですか?

67
Trimack

持っているのは有効な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=&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部分に含まれるものだけがあります。

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接続文字列

124
marc_s

この問題は、インデックスによってweb.config(またはapp.config)接続文字列を参照するときに発生する可能性があります...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

ゼロベースの接続文字列は、常に設定ファイル内の文字列であるとは限りません スタックの上位からデフォルトで他のものを継承します

推奨されるアプローチは、名前で接続にアクセスすることです...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

または、最初に設定ファイルのconnnectionStrings要素をクリアするには...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...
5
Baldy

私は同じ問題を抱えていました。
しかし、このコードはうまく動作します。

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
2
Satish Singh

私はこれが古い投稿であることを知っていますが、最近同じエラーを受け取ったので、それが価値があるもののために、別の解決策があります:

これは通常、接続文字列エラーです。接続文字列の形式を確認してください。「エンティティフレームワーク接続文字列」を検索するか、上記の提案に従ってください。

しかし、私の場合、私の接続文字列は問題なく、エラーは完全に異なるものによって引き起こされたので、これが誰かを助けることを願っています:

  1. 最初にEDMXエラーが発生しました:EDMXに新しいデータベーステーブルがあり、そのテーブルがデータベースに存在しませんでした(面白いのは、私のEDMXまたは出力ウィンドウではなく、「警告」の下の「エラーリスト」ウィンドウでVisual Studioに隠れています。不足しているテーブルをデータベースに追加して、このエラーを解決しました。しかし、私は実際にストアドプロシージャを追加しようとして忙しく、「データソース」エラーが発生するので、以下の解決方法を参照してください:

  2. ストアドプロシージャエラー:ストアドプロシージャを追加しようとして、EDMXデザインウィンドウから追加するたびに、「データソース」エラーが発生しました。解決策は、ストアドプロシージャを空白として追加することでした(ストアドプロシージャの名前と宣言は保持しましたが、ストアドプロシージャの内容を削除し、 'select 1'に置き換えて、EDMXへの追加を再試行しました)。動いた!おそらく、EFはストアドプロシージャ内の何かが気に入らなかったのでしょう。 EFにprocを追加したら、データベースのprocの内容を希望どおりに更新でき、動作し、「データソース」エラーが解決しました。

奇妙さ

0
Spyder

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ファイルの接続が自動的に生成されます。

0
Mubarak

同じエラーが発生していたので、接続文字列を次のように更新しました。

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

これを試して問題を解決します。

0
Hasiya