2015-08-19 3 views
0

Я работаю над проектом рабочего стола C# Windows с использованием Entity Framework 6. В решении есть 3 разных проекта. Скажем, ProjectA, который является проектом запуска и включает exe-файл; ProjectB, который является каркасом и включает в себя DbContext; и ProjectC, который включает в себя все модели.Как включить миграцию, когда контекст и модели находятся в отдельных сборках

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

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

Пожалуйста, помогите.

Заранее спасибо.

ответ

1

Вы можете настроить классы инициализации, которые могут быть вызваны из вашего проекта запуска.

public static class InitializeAndSeed 
     { 
      public static void InitializeContext() 
      { 
       Database.SetInitializer(new MigrateDatabaseToLatestVersion<YourDbContext 
             ,YourDbContextMigrations>()); 

       using (var db = new YourDbContext()) 
       { 
        db.Database.Initialize(false); 
       } 
      } 


     } 

    public class YourDbContextMigrations : DbMigrationsConfiguration<YourDbContext> 
     { 


      public YourDbContextMigrations() 
      { 
       AutomaticMigrationsEnabled = true; 
       AutomaticMigrationDataLossAllowed = true; 
      } 

      //Your seeding and your migrations 
     } 

Затем из проекта запуска вы можете вызвать метод InitializeContext() для инициализации контекста из класса запуска приложения или где-либо вам нужно. Вы просто хотите, чтобы вы только инициализировали его один раз для запуска приложения.

+0

Я видел во многих примерах коды, которые они установили AutomaticMigrationsEnabled в false. Можно ли полностью оставить миграцию на EF? – user3530012

+0

@ user3530012, это зависит от изменений, внесенных вами в ваши модели с течением времени, и если вам нужно вручную добавить код миграции. Иногда ваша модель может настолько сильно измениться, что базовый хранилище данных должен знать, как выполнять миграции. EF подходит для отслеживания миграции для вас, если ваша модель не изменится кардинально или ваши клавиши/индексы не будут выполнены – DDiVita

Смежные вопросы