6

私はEntity Framework Code First 4.3 + Azureを使用しており、データベースへの接続に問題があります。私が手にエラーがある(最初のクエリで)以下:Entity Frameworkコード最初のAzure接続

Keyword not supported: 'server'. 

I持って私のWeb.configファイルに設定し、次の接続

<configSections> 
    type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 

    <connectionStrings> 
    <add name="TestDBContext" 
     connectionString="Server=tcp:[SUBSCR].database.windows.net,1433;Database=[MyDB];User ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

マイDbContext実装するクラスは、接続文字列の名前を使用しています。

public class MyContext : DbContext, IMyContext 
    { 
     public MyContext() 
      : base("TestDBContext") 
     { 
      Configuration.LazyLoadingEnabled = true; 
      Configuration.ProxyCreationEnabled = true; 
     } 

あなたは何が起こっているのか分かりますか?

答えて

0

私はこれを試してみましたが、あなたを助けるかもしれません。 1433が問題を起こしている可能性があります、それはポート番号ですか?または何? 。このようにしてください。

チェックこのリンクWindows Azure with Sql

<add name="dbContext" connectionString="Server=tcp:xxxxxxxx.database.windows.net;Database=xxxxxxxx;User [email protected];Password=xxxxxxxxxx;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.EntityClient" /> 
+0

それは試しても動作しません... 1433はSQL Serverのデフォルトポートで、私はAzureサブスクリプション/データベースから接続文字列を貼り付けてコピーします。 –

0

これを試してみてください:

データソース= TCP:YOUR-DATABASE-HERE.database.windows.net、1433; データベース= GolfRounds; ユーザーID = YOUR-USERNAME @ YOUR-SERVER;パスワード=あなたのパスワード; Trusted_Connection = False; Encrypt = True;

http://msdn.microsoft.com/en-us/library/windowsazure/ff951633.aspxには、MSDNの記事がありますが参考になるかもしれません。

+0

キーワードはサポートされていません: 'データソース'。 –

5

私はちょうど同じ問題を抱えていました。

Entity Frameworkに必要な接続文字列のすべてのメタデータが欠落しています。 SQL Azureによって提供される接続文字列は、EFの接続文字列のprovider connection stringパラメータ内に挿入する必要があります。

<add name="MyConnectionString" connectionString="metadata=res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;[PUT SQL AZURE CONN STRING HERE]&quot;" providerName="System.Data.EntityClient" />

あなた自身のプロジェクトからメタデータを使用する必要があります。私は既存のデータベースから生成したEFプロジェクトからそのメタデータを取り出しました。

+1

開発時に利用できるメタデータがないため、最初にEFコード+ DbContextを使用しています(データベースからデータモデルを生成していません)。 –

+7

@Seseコードファーストを使用している場合、接続文字列プロバイダは 'System.Data.EntityClient'ではなく' System.Data.SqlClient'でなければなりません。 – ryanmcdonnell

2

私は同じ問題を抱えていました。

<add name="eManagerTurModelConnection" connectionString="metadata=res://*/ORM.eManagerFinanceModel.csdl|res://*/ORM.eManagerFinanceModel.ssdl|res://*/ORM.eManagerFinanceModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<server>.database.windows.net;Initial Catalog=eManagerTur;Integrated Security=False;User ID=<user>;Password=<Password>;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

そして、それは私が私のweb.configファイルに追加接続文字列を取得していなかったので、私は、私のウェブサイトのたconnectionStringを削除働いた後:私は、web.configファイルでこれを入れたconnectionString、解決しました。

英語悪い... =)

2

プロバイダはproviderNameで=「System.Data.SqlClientの」

する必要があります私はVSからのAzureに接続して、プロパティを見て、私の接続文字列を設定し、プロバイダ名。

<add name="context" connectionString="Data Source=myServer,myPort;Initial Catalog=myDBName;Persist Security Info=True;User ID=myUserName;Password=myPassword;" providerName="System.Data.SqlClient"/> 

私は問題なしでupdate-databaseを実行できました。

-1

私はメタデータにアクセスできなかった同様の問題がありました。この場合、プロバイダーとしてSystem.Data.SqlClientを使用する必要があります。また、MultipleActiveResultSets = Trueを接続文字列に追加する必要があります

関連する問題