c# - MigrationHistory 作为 Entity Framework 7 中 DbContext 中的实体

标签 c# entity-framework entity-framework-core entity-framework-migrations .net-core

我正在尝试将(由 Entity Framework 生成的)表__EFMigrationsHistory作为一个实体放入我的数据库上下文中:

enter image description here

在 Entity Framework 6 中这非常有效,但是有人在 EntityFramework 7 中尝试过吗?

我尝试的是,只添加一个新类 __EFMigrationsHistory - 但它太容易了 - 数据库中已经有一个名为 __EFMigrationsHistory 的表(感谢...)

然后我阅读了有关 HistoryRow 的信息,我将从中继承一个类。所以我创建了这个类

public class MigrationsHistory : HistoryRow 
{ 
    //... constructor etc.
}

开始迁移并且:我有两个迁移历史表(但只有原来的一个有效)

所以我继续阅读并搜索要实现/继承的接口(interface)和类。我找到了 SqlServerHistoryRepository - 看起来不错。我创建了一个继承自 SqlServerHistoryRepository 的新数据库上下文(就像我在 EF6 中所做的那样)。 - 但这不是上下文类,所以我不能将它添加到 Startup.cs 中(就像我对默认应用程序上下文所做的那样)

所以我检查了 DbContext 是否可以在某处添加历史表(如在 EF6 中),但是没有任何东西可以将表添加到我的上下文中。

所以:有人已经尝试将迁移历史添加到他的上下文中了吗?有人成功了吗?

最佳答案

虽然我在 EF Core 2.0 上尝试了 bricelam 的回答但没有成功, 在 Microsoft.EntityFrameworkCore有一个方法;

// .NET Core 1.0 + Platform Extensions
// Microsoft.EntityFrameworkCore.Relational, Version=1.1.0.0, PublicKeyToken=adb9793829ddae60

namespace Microsoft.EntityFrameworkCore
{
    public static class RelationalDatabaseFacadeExtensions
    {
        public static IEnumerable<string> GetAppliedMigrations(this DatabaseFacade databaseFacade);
    }
}

调用如下;

var dbcontext = new DbContext();
IEnumerable<string> history = dbcontext.Database.GetAppliedMigrations();

关于c# - MigrationHistory 作为 Entity Framework 7 中 DbContext 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351163/

相关文章:

c# - Entity Framework 6 : Adding child object to parent's list vs. 将子项的导航属性设置为父项

c# - Entity Framework 和存储过程

c# - 没有 DbSet 的原始 SQL 查询 - Entity Framework Core

c# - 使用 .NET 在同一个进程中执行多个命令行

c# - 在 EF 中保存对象时,不会在数据库中建立新的多对多连接

c# - 减少 Entity Framework 库对 app.config 的依赖

asp.net-core - 在导航属性上使用虚拟

c# - 框架资源提取失败。找不到路径的一部分。 AbstractionsStrings.resw

c# - 数据转换失败。 [ OLE DB 状态值(如果已知)= 2 ]

c# - 线程逐渐增加处理器使用率