EF 4.1 — проблема с доступом к БД из одного приложения на разных машинах

Я развернул приложение, использующее EF, на том же сервере, что и моя БД. Очевидно, что при первом запуске приложения на сервере была создана БД - никаких проблем.

Однако, когда я пытаюсь запустить то же приложение с моего локального компьютера, используя ту же строку подключения/данные для входа в систему, что и экземпляр, работающий на сервере, я получаю это исключение, говорящее, что модель изменилась, хотя это не так:

Модель, поддерживающая контекст «EkmDomainsDbContext», изменилась с момента создания базы данных. Либо вручную удалите/обновите базу данных, либо вызовите Database.SetInitializer с экземпляром IDatabaseInitializer. Например, стратегия DropCreateDatabaseIfModelChanges автоматически удалит и заново создаст базу данных и, при необходимости, заполнит ее новыми данными.

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


person jcvandan    schedule 30.08.2011    source источник


Ответы (1)


Существующие базы данных обычно не нуждаются в каком-либо инициализаторе базы данных, поэтому его можно отключить для вашего типа контекста, вызвав:

Database.SetInitializer<YourDataContext>(null);
person Henry Tshobo    schedule 30.08.2011
comment
На самом деле я никогда не вызываю SetInitializer — существуют ли значения по умолчанию, которые устанавливаются, если вы не вызываете метод, передающий значение null? - person jcvandan; 30.08.2011
comment
спасибо, это решило мою проблему, как я сказал, что я вообще не вызывал SetInitializer, что, вероятно, означает, что был настроен инициализатор по умолчанию - person jcvandan; 30.08.2011
comment
Структура Entity фактически вызывает удаление базы данных, если модель изменяется по умолчанию, если только инициализатор не был изменен или удален. - person Chris McGrath; 01.09.2011