В EF Core как проверить, нужна миграция или нет? - PullRequest
0 голосов
/ 25 января 2019

Я использую Entity Framework Core в приложении Xamarin.iOS.

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

Вот контекст:

public void Initialize()
{
   using (var dbContext = new MyDbContext(m_dbContextOptions))
   {
       --> bool isNeeded = demoTapeDbContext.Database.IsMigrationNeeded()

       demoTapeDbContext.Database.Migrate();
   }
}

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

public async Task InitializeAsync()
{
   using (var dbContext = new MyDbContext(m_dbContextOptions))
   {
       bool isMigrationNeeded = (await demoTapeDbContext.Database.GetPendingMigrationsAsync()).Any();

       demoTapeDbContext.Database.Migrate();
   }
}

1 Ответ

0 голосов
/ 25 января 2019

Вы правы, что вам следует использовать метод GetPendingMigrationsAsync.Из документов :

Асинхронно получает все миграции, которые определены в сборке, но не применены к целевой базе данных.

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

...