2013-04-08 2 views
1

Я получаю следующую ошибку при запуске приложения mvc 4.Изменена модель, поддерживающая контекст «DMSContext».

Модель, поддерживающая контекст «DMSContext», изменилась с момента создания базы данных. Рассмотрите возможность использования First First Migrations для обновления базы данных

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

Я нашел много ответов на google, но никто не работал.

В частности, я попытался добавить следующее к моей global.asax:

Database.SetInitializer<DMSContext>(null); 

и

Database.SetInitializer<DMSContext<Contact>>(null); 

в выше, DMSContext является DbContext. Контакт - это модель, в которой происходит изменение, вызывающее ошибку.

Я также попытался добавить следующее к моему классу контекста:

public DMSContext() : base() 
      { 
      Configuration.AutoDetectChangesEnabled = false; 
      } 

Большинство направлении я затем с этой страницы, но не повезло.

The model backing the <Database> context has changed since the database was created

ответ

2

Если вы работаете с Entity Framework Code First, рекомендуется использовать миграцию в своем приложении. Для этого, see this link.

Теперь каждый раз, когда вы что-то меняете в своем коде (Mostities Entities), просто создайте, а затем запустите Update-Database -Force в своем Package Manager Console.

Сообщите мне, если у вас есть еще вопросы.

+0

Это сработало, НО зачем мне нужно обновлять базу данных? Действительно ли это происходит в реальном времени? Я определенно этого не хочу. Я уже включил миграции, используя это руководство - http://msdn.microsoft.com/en-us/data/jj591621.aspx, но избегал использования части базы данных обновлений. – tintyethan

+0

@ EthanPelton С 'ef Code-First' небольшое изменение в вашей модели требует обновления базы данных. Модели всегда должны оставаться в силе с вашей базой данных. «Обновление-База данных -Force» делает это возможным. – Komengem

+0

@ EthanPelton Да, изменение вашей модели влияет на вашу «Живую базу данных». Это красота кода. Сначала вы делаете изменения только в одном месте и редко приходите к самой базе данных. – Komengem

2

Хотя вы не используете миграции пытаются создать, не запустить его, но вы будете иметь возможность увидеть различия с базой данных.

+0

Очень полезно, я забыл, что я добавил еще одно поле в модели - это указал мне, где именно мне нужно было смотреть. –

2

Проверьте имя класса, который наследует DbContext. Это имя должно быть таким же, как имя ConnectionString в Web.config

<connectionStrings> 
    <add name="TheSameNameAsYourDbContextClass" providerName="" connectionString="" /> 
    </connectionStrings> 
Смежные вопросы