Код Entity Framework сначала пытается открыть неправильную базу данных - PullRequest
1 голос
/ 27 января 2012

Я пишу приложение ASP MVC 3.Я использую Sql Server 2008 R2 для своей базы данных.

Я создал свою модель данных, а мой DbContext называется EFDbContext.Я создал свою базу данных с именем SportsStore.

Моя строка подключения:

<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />

Я запускаю приложение, и данные не отображаются.

Я выяснилчто EF автоматически генерирует новую базу данных SportsStore.Domain.Concrete.EFDbContext, но я хочу, чтобы она использовала ранее созданный SportsStore и автоматически сопоставляла свойства моей модели со столбцами таблицы.Если я отключаю функцию автоматического создания базы данных, я получаю следующую ошибку:

Не удается открыть базу данных "SportsStore.Domain.Concrete.EFDbContext", запрошенную при входе в систему

Entity Framework попытаться открыть базу данных SportsStore?Почему он пытается открыть это?У меня есть неверная строка подключения?

Ответы [ 4 ]

2 голосов
/ 27 января 2012

Я могу дать вам только предложение.Я столкнулся с подобными трудностями, когда у меня есть DbContext и соответствующая строка соединения в одном проекте (обычно это библиотека классов).Однако он игнорирует последнее, если вы используете его в других проектах, таких как формы win.Он пытается получить строку подключения из файла конфигурации запускаемого проекта.

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

2 голосов
/ 27 января 2012

Странно ... вы пробовали это для вашей строки подключения?Я думаю, что вам нужно MARS, чтобы сделать некоторые вещи с DbContext.

<add name="EFDbContext" connectionString="Data Source=LOCALHOST\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

Это единственное, что отличается от одного из моих проектов, где это работает.Вы уверены, что класс и строка подключения названы одинаково?Вы пытались назвать строку подключения следующим образом?

<add name="SportsStore.Domain.Concrete.EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />
1 голос
/ 23 мая 2013

Я закомментировал строку подключения по умолчанию и поместил мою под:

<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-20130509163734;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Mvc4Movie-20130509163734.mdf" providerName="System.Data.SqlClient" />-->
<add name="MoveieDBContext" ...

Это заставило EF игнорировать мою строку подключения и генерировать свою собственную.Раскомментирование соединения по умолчанию заставило EF использовать мое, и все заработало.

1 голос
/ 17 марта 2012

хмм. Я получаю ту же ошибку. После некоторых усилий я понял, что поместил строку подключения в неправильный файл Web.config. Есть два файла веб-конфигурации. Один находится в папке просмотра, а другой - в проекте. Вам нужно добавитьСтрока подключения в одной папке проекта

...