它是一種檢查當前在數據庫上的遷移(版本)的方法

.net entity-framework-core

我試圖弄清楚是否有辦法檢查哪個遷移版本是在數據庫上運行的最新版本。這要知道某個數據庫的狀態。

我讀了一些關於實體框架6的東西正在創建一個表來跟踪它。我沒有嘗試過,但我想知道是否有類似於實體框架的核心。

一般承認的答案

有可能至少得到

在程序集中定義但尚未應用於目標數據庫的遷移。

來源 )通過DbMigrator的方法getPendingMigrations()

如果您想要數據庫的實際版本,實際上有一個包含MigrationId列的遷移歷史記錄表__MigrationHistory ,它可以為您提供所需的內容。這是一篇展示如何使用它的文章: https//msdn.microsoft.com/en-us/data/dn456841.aspx


熱門答案

可以使用以下代碼獲取Entity Framework Core中的掛起遷移列表:

var migrationsAssembly = db.GetService<IMigrationsAssembly>();
var historyRepository = db.GetService<IHistoryRepository>();

var all = migrationsAssembly.Migrations.Keys;
var applied = historyRepository.GetAppliedMigrations().Select(r => r.MigrationId);
var pending = all.Except(applied);

請參閱https://github.com/aspnet/EntityFramework/issues/6110#issuecomment-242220554

您需要包含幾個using語句:

using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;

有一個類似於EF 6中的更正式API的公開問題: https//github.com/aspnet/EntityFramework/issues/577



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因