它是一种检查当前数据库上正在迁移的版本的方法

sti*_*n64 4 .net entity-framework-core

我试图找出是否有一种方法可以检查哪个迁移版本是数据库上正在运行的最新版本。这可以知道某个数据库的状态。

我读到有关实体框架6的一些信息,即正在创建一个表以对其进行跟踪。我还没有尝试过,但是我想知道是否有任何类似于实体框架核心的内容。

Mik*_*ind 11

可以使用以下代码在 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);
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/aspnet/EntityFramework/issues/6110#issuecomment-242220554

您需要包含几个 using 语句:

using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
Run Code Online (Sandbox Code Playgroud)

与 EF 6 中的 API 类似的更正式 API 存在一个未解决的问题:https : //github.com/aspnet/EntityFramework/issues/577


Dom*_*nik 5

至少有可能获得

程序集中定义但尚未应用于目标数据库的迁移。

来源)通过DbMigrators方法getPendingMigrations()

如果要使用数据库的实际版本,则实际上有一个迁移历史记录表,__MigrationHistory其中包含一MigrationId列,应为您提供所需的内容。这是一篇展示如何使用它的文章:https : //msdn.microsoft.com/zh-cn/data/dn456841.aspx