ASP.NET EFCodeFirst не использует правильную строку подключения - PullRequest
2 голосов
/ 25 февраля 2011

Я пытаюсь опубликовать веб-сайт с использованием ASP.NET MVC3 EF и CODEFIRST с бэкэндом SQL Server 2008.На моей локальной машине я использовал для разработки sql express db, но теперь, когда я запускаю live, я хочу использовать свою производственную базу данных.Проблема в том, что когда я пытаюсь запустить приложение, оно все еще использует мою локальную строку соединения с БД.Я полностью удалил старую строку подключения из моего файла web.config и использую тег <clear /> перед созданием новой строки подключения.Я также очистил решение и восстановил, но каким-то образом он все еще подключается к старой базе данных.Чего мне не хватает?

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

  <connectionStrings>
    <clear />
    <add name="CellularAutomataDBContext"
         connectionString=" Server=XXX;
         Database=CellularAutomata; User ID=XXX; Password=XXX; Trusted_Connection=False" 
         providerName="System.Data.SqlClient" />  
  </connectionStrings>

UPDATE

Когда я отлаживаю и смотрю на объект DBCONTEXT,это то, что обнаруживается для его связи:

Data Source=.\\SQLEXPRESS;Initial Catalog=CellularAutomata.Models.D1K2N3CARuleDBContext;Integrated Security=True;MultipleActiveResultSets=True"

Я не уверен, почему это происходит, потому что я не могу найти его где-то установленным.Кроме того, в конфигурации указано LazyLoadingEnabled = true, я предполагаю, что это может быть частью проблемы, возможно, это не загрузка новой строки подключения.Где я могу изменить эти параметры?

ОБНОВЛЕНИЕ 2

EFCodeFirst использует строку подключения по умолчанию, я не могу понять, как заставить его принять строку подключениячто я указываю в файле web.config.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2011

Итак, при использовании EF CodeFirst существует строка подключения по умолчанию, которую он использует.Если вы хотите иметь возможность использовать пользовательскую строку подключения, есть несколько рекомендаций по параметрам, которым вы должны следовать.

0 голосов
/ 11 ноября 2011

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

<connectionStrings>
  <add name="MyAppContext" .../>
  <add name="ApplicationServices" .../>
  <add name="DefaultConnection" .../>
</connectionStrings>
0 голосов
/ 25 февраля 2011

Отображаемое connectionString не является строкой подключения EF. EF не будет использовать это. Значит, вы меняете не то.

EF connectionString будет включать providerName="System.Data.EntityClient"

...