Ви просто хочете автоматично оновити базу даних до останньої версії, коли і де колись працює ваша програма (розробка та виробництво)?
Це може бути не найкращою ідеєю, за винятком дуже простих сценаріїв, коли ви знаєте, що можете довіряти автоматичній міграції, і ручна міграція баз даних неможлива. Перегляньте цю відповідь: https://stackoverflow.com/a/15718190/2279059 . Якщо ви нехтуєте цим попередженням, читайте далі.
Додайте наступне до web.config
:
<entityFramework>
<contexts>
<context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Це може виглядати страшно, але в основному це те ж саме, що і наступний код:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
Якщо вам не пощастило web.config
, ви можете спробувати застосувати цей кодGlobal.asax
. Я особисто віддаю перевагу конфігурації над кодом.
Якщо ви хочете, щоб ваш конфігураційний файл виглядав чистішим, ви також можете отримати новий клас із класу шаблону, MigrateDatabaseToLatestVersion
тому вам не потрібно використовувати загадковий синтаксис для передачі аргументів типу у ваш web.cofig
файл:
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
Для цього потрібно встановити ініціалізатор бази даних, який автоматично оновлює базу даних до останньої версії.
(Джерело та детальніша інформація: http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html )