Entity Framework Code First Azure соединение - PullRequest
6 голосов
/ 11 февраля 2012

Я использую Entity Framework Code First 4.3 + Azure и испытываю трудности с подключением к базе данных.Я получаю следующую ошибку (в первом запросе):

Keyword not supported: 'server'.

В моем Web.config настроено следующее соединение: 1004 *

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

Можете ли вы рассказать, что происходит?

Ответы [ 6 ]

5 голосов
/ 26 июля 2012

У меня просто была такая же проблема.

Вам не хватает всех метаданных в строке соединения, которые требуются Entity Framework. Строка подключения, предоставляемая SQL Azure, должна быть вставлена ​​в параметр provider connection string строки подключения 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" />

Вам нужно будет использовать метаданные из вашего собственного проекта. Я извлек эти метаданные из проекта EF, сгенерированного из существующей базы данных.

2 голосов
/ 09 ноября 2013

Поставщик должен иметь имя провайдера = «System.Data.SqlClient»

Я подключился к Azure из VS, а затем посмотрел свойства и установил строку подключения и имя поставщика.

 <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 без проблем.

2 голосов
/ 07 ноября 2013

У меня была такая же проблема.Я решил, поместив в web.config эту строку подключения:

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

Английский плохо ... =)

0 голосов
/ 20 февраля 2014

У меня была похожая проблема, когда у меня не было доступа к метаданным, в этом случае вам нужно использовать System.Data.SqlClient в качестве поставщика.Вам также необходимо добавить MultipleActiveResultSets = True в строку подключения

0 голосов
/ 11 февраля 2012

Попробуйте это:

Источник данных = tcp: YOUR-DATABASE-HERE.database.windows.net, 1433;Database = GolfRounds;Идентификатор пользователя = YOUR-USERNAME @ YOUR-SERVER;Password = ВАШ-ПАРОЛЬ;Trusted_Connection = False;Encrypt = True;

Существует также статья MSDN по адресу http://msdn.microsoft.com/en-us/library/windowsazure/ff951633.aspx, которая может оказаться полезной.

0 голосов
/ 11 февраля 2012

Я пытался так, это может помочь вам.может быть 1433 делает проблему, это порт нет?или что?,попробуй вот так.

проверьте эту ссылку Windows Azure с Sql

<add name="dbContext" connectionString="Server=tcp:xxxxxxxx.database.windows.net;Database=xxxxxxxx;User ID=xxxxxxx@xxxxxxxxx;Password=xxxxxxxxxx;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.EntityClient" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...