EF Code First с SQL Server Express 2012 ConnectionString

Все работает отлично со следующей строкой подключения.

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />

Недавно я установил SQL Server 2012 Express на свой локальный компьютер для тестирования, но не могу установить соединение. Вот моя строка подключения с использованием проверки подлинности Windows.

<add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

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


person Budoray    schedule 26.04.2012    source источник


Ответы (3)


Код EntityFramework сначала использует defaultConnectionFactory в файле app.config или web.config, который будет автоматически подключаться к .\SQLEXPRESS. Эта конфигурация выглядит следующим образом:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
  </entityFramework>

Если вы используете EF Code First, у вас, вероятно, есть класс, производный от DbContext, для использования в качестве контекста. По замыслу EntityFramework будет искать строку подключения, имеющую то же имя, что и ваш класс контекста, и использовать ее вместо defaultConnectionFactory. Вот как я его использую:

<connectionStrings>
    <add name="ObjectContext" 
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=My.Db.Name; Integrated Security=True; MultipleActiveResultSets=True"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

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

person Florin Bombeanu    schedule 01.08.2012
comment
Приношу извинения за то, что так долго отмечаю это как решение для меня. Я отвлеклась на другое хобби (муж, если вы женаты) и только сейчас вернулась к этому. Моя строка подключения была переопределена, и я не смог ее перехватить после публикации. - person Budoray; 07.05.2013

Вы уверены, что эта часть соединения верна? "Источник данных=.\SQLEXPRESS [Имя];

Я не использовал SQL Server 2012, но попытался удалить текст [Имя].

person fcaldera    schedule 27.04.2012
comment
Мои извинения. Строка подключения выглядит следующим образом. connectionString=Data Source=.\SQLEXPRESS;Catalog=myHub;Integrated Security=SSPI; имя_провайдера = System.Data.SqlClient - person Budoray; 27.04.2012
comment
Я также пробовал connectionString=Data Source=.\SQLEXPRESS;Integrated Security=SSPI; имя_провайдера = System.Data.SqlClient - person Budoray; 27.04.2012

Это сработало для меня

add name="MovieDBContext" connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=Movies;
Integrated Security="True" providerName="System.Data.SqlClient"

Я работал над этим учебником, и мне пришлось его отработать. MovieDBContext создается в коде модели приложения mvc.

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

Это автоматизирует IDE, создающую класс контроллера, но это не сработает, пока я не получу строку подключения прямо в файле web.config.

person Paul    schedule 10.04.2013