質問

デフォルトのメンバーシップデータベースを使用する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=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      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ファイルの接続が自動的に生成されます。

これは古い投稿であることは知っていますが、最近同じエラーが発生したので、それが価値があるので、別の解決策があります:

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

ただし、私の場合、接続文字列は正常であり、エラーは完全に異なるものが原因で発生したため、これが誰かの助けになることを願っています:

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

  2. ストアドプロシージャエラー:ストアドプロシージャを追加しようとして、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" />

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top