6

Sto utilizzando Entity Framework Code Prima 4.3 + Azure e con difficoltà di connessione al database. L'errore che ottengo è la seguente (sulla prima query):Codice quadro entità Prima connessione Azure

Keyword not supported: 'server'. 

Ho il seguente collegamento istituito nel mio 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> 

mio DbContext classe che implementa utilizza il nome della stringa di connessione:

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

Puoi dire cosa sta succedendo?

risposta

0

ho provato così, potrebbe aiutarti. potrebbe essere il 1433 a creare problemi, è la porta no? o cosa? . prova così

controllare questo link 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

provato, non funziona ... 1433 è la porta predefinita per SQL Server e ho copiato la stringa di connessione dal mio abbonamento/database Azure. –

0

Prova questo:

origine dati = tcp: YOUR-DATABASE-HERE.database.windows.net, 1433; Database = GolfRounds; ID utente = YOUR-USERNAME @ YOUR-SERVER; Password = YOUR-PASSWORD; Trusted_Connection = False; Crittografare = True;

C'è anche un articolo MSDN allo http://msdn.microsoft.com/en-us/library/windowsazure/ff951633.aspx che può essere utile.

+0

Parola chiave non supportata: 'origine dati'. –

5

Ho appena avuto lo stesso problema.

Mancano tutti i metadati nella stringa di connessione richiesta da Entity Framework. La stringa di connessione fornita da SQL Azure deve essere inserita nel parametro provider connection string della stringa di connessione di EF.

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

Avrete bisogno di utilizzare i metadati dal tuo progetto. Ho estratto i metadati da un progetto EF generando da un database esistente.

+1

Sto usando prima il codice EF + DbContext (non sto generando il mio modello di dati dal database) quindi non ho alcun metadata disponibile al momento dello sviluppo. –

+7

@Sese Se si utilizza Code First, il provider della stringa di connessione deve essere "System.Data.SqlClient" non "System.Data.EntityClient". – ryanmcdonnell

2

Ho avuto lo stesso problema. Ho risolto, mettendo nel web.config questo connectionstring:

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

E dopo ho tolto il connectionstring del mio sito web, lavorato, perché non stava ottenendo la stringa di connessione che ho aggiunto nel mio web.config.

Inglese male ... =)

2

Il fornitore deve essere providerName = "System.Data.SqlClient"

ho collegato Azure da VS e poi guardato le proprietà e impostare la mia stringa di connessione e nome del provider.

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

Sono stato quindi in grado di eseguire database di aggiornamento senza problemi.

-1

Ho avuto un problema simile a quello in cui non avevo accesso ai metadati, in questo caso è necessario utilizzare System.Data.SqlClient come provider.Sarà inoltre necessario aggiungere MultipleActiveResultSets = True alla stringa di connessione

Problemi correlati