2009-09-10 16 views
58

私は、デフォルトのメンバーシップデータベースを持つ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" /> 

何か問題がありますか?

答えて

110

有効なADO.NET接続文字列がありますが、有効なEntity Framework接続文字列はNOTです。

EF接続文字列は次のようになります。あなたはあなたのEF接続文字列内のすべてのmetadata=providerName=要素が欠落している

<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> 

......あなたは基本的にのみに記載されたものを持っていますprovider connection string部分。

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

マルク・

UPDATEは:OK、私はあなたが何をしようとして理解:あなただけのASP.NETユーザー/会員データベースのための第二の「ADO.NET」接続文字列を必要とします。あなたの文字列はOKですが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の接続(メタデータと=、すべて)の文字列を指定した場合

次のものが必要と

+0

物理ファイル "C:\ OVSS \ Stavicky \ trunk \ Stavicky \ App_Data \ aspnetdb.mdf"を開くことができないという例外が発生しています。オペレーティングシステムエラー5: "5(このエラーのテキストを取得できませんでした。原因:15105)" ファイルC:¥OVSS¥Stavicky¥trunk¥Stavicky¥App_Data¥aspnetdb.mdfに自動ネーム・データベースをアタッチしようとして失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、UNC共有上にあります。いくつかの情報源から、私は、これは間違っていると思った。とにかくありがとう。 – Trimack

+0

2番目の接続文字列の問題がわかりません。デザイナーが作成したものを用意して、私が書いたASPNETMembershipを追加する必要がありますか? – Trimack

+0

エンティティがEDMXデザイナにある場合、エンティティは「EntityClient」とEF接続文字列を使用してアクセスする必要があります。 「既成のままの」ASP.NETメンバーシップシステムを使用する場合は、EFモデルの一部ではないため、ASP.NETメンバーシップデータベース用の接続文字列を作成するときには、 EntityClient "をプロバイダとして使用する - SqlClientを使用します。 –

4

この問題は、あなたのweb.configファイルを参照する(またはapp.configを)接続時に発生する可能性があるすべてのEFの追加なしでproviderName=System.Data.SqlClient ==>まっすぐADO.NET SQL Server接続文字列を指定した場合インデックスで文字列...

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

ゼロベースの接続文字列は、常にそれinherits others by default from further up the stackとしてあなたの設定ファイル内の1つのではありません。

お勧めのアプローチは、名前での接続にアクセスするためには...

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

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

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

私はこの問題を抱えていました私はEntity Frameworkを使い始めました。以前のSQLサーバー接続をEntityFrameWork接続に変更しなかったときに起こりました。

ソリューション:接続はweb.configファイル「名を追加=」エンティティ「たconnectionString = XYZ」を通じて行われているファイルで 、 は、あなたが正しいの接続を参照していることを確認してください、私の場合、私が持っていましたこれを行う

 public static string MyEntityFrameworkConnection 
    { 
     get 
     { 
      return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; 
     } 

    } 

接続を確立する必要があるときはいつでもMyEntityFrameworkConnectionを呼び出します。

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection; 

注:エンティティモデルをソリューションに追加すると、web.configファイルの接続が自動的に生成されます。

2

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

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

私は、これは古い記事です知っているが、それは価値があるものを、ここでもう一つの解決策だためので、私は最近、同じエラーを得た:

これは通常、接続文字列のエラーで、あなたのフォーマットを確認してください接続文字列、あなたは 'エンティティのフレームワークconnectionstring'を検索するか上記の提案に従うことができます。

  1. まず私はEDMXエラーを持っていた:あった

    はしかし、私はこれが誰かの役に立てば幸い私の場合、私の接続文字列は大丈夫だったし、エラーは完全に別の何かによって引き起こされました新しいデータベーステーブルがEDMXにあり、テーブルがデータベースに存在しませんでした。面白いのはエラーです。エラーは私のEDMXまたは出力ウィンドウに表示されていなかったのであまり明白ではありませんでした。 「警告」の下の「エラーリスト」ウィンドウ)。私はデータベースに不足しているテーブルを追加してこのエラーを解決しました。

  2. ストアドプロシージャのエラー:私は、ストアドプロシージャを追加しようと毎回Iました。しかし、私は実際にストアドプロシージャを追加しようと、まだ私はそれを解決する方法下記参照「データソース」というエラーを取得して忙しかったです私は 'datasource'エラーが発生したEDMXデザインウィンドウを介してそれを追加しました。解決方法は、ストアドプロシージャを空白として追加することでした(ストアドプロシージャの名前と宣言を保持していましたが、ストアドプロシージャの内容を削除して、それを 'select 1'に置き換えてEDMXに追加しようとしました)。出来た!おそらくEFは私の記憶されたproc内のものを好きではなかったでしょう。私がEFにprocを追加すると、データベースのprocの内容を私が望むものに更新することができ、 'datasource'エラーが解決されました。

すごみ

0

私はそれはあなたの問題を解決します、これを試してみてください同じエラーを取得し、その後、以下のように私の接続文字列を更新し、

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

ました。

関連する問題