【问题标题】:How can I define ContextKey in EntityFramework 7?如何在 Entity Framework 7 中定义上下文键?
【发布时间】:2015-12-11 16:10:36
【问题描述】:

在 EF6 中,当我使用 Enable-migrations 命令时,我从 DbMigrationsConfiguration 类型生成一个文件,并且在该文件中有一个名为“ContextKey”的属性。

我使用这个属性来定义上下文中的键,并在不同上下文中的表之间建立关系,同样在不同的类中。

internal sealed class Configuration : DbMigrationsConfiguration<WebApplication2.Context2>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        ContextKey = "eTurnContext";
    }
}

但是在 EF7 中我没有更多的这个对象 DbMigrationsConfiguration。在 EF7 中是否有另一种方法可以解决这个问题?

谢谢

【问题讨论】:

  • 你找到答案了吗?

标签: entity-framework entity-framework-6 entity-framework-core


【解决方案1】:

取自我的问题/答案 - Entity Framework Core Mutiple DbContext Migrations in same database

以前,Entity Framework 将模型的快照存储在数据库中。这导致 Entity Framework 每次都必须查询数据库才能确定已经运行的迁移。

在 EF7 中,迁移历史记录存储在代码中的快照中(以及存储在熟悉的 Migrations 文件夹中的现有迁移)。 每次更新模型并创建迁移时,快照文件都会更新。

因此,在早期版本的实体框架中使用的 ContextKey 是不需要的。

它只是工作。

【讨论】:

    【解决方案2】:

    Entity Framework Core (v7) 的表 __EFMigrationsHistory 有两列:

    • MigrationId - 在 Add-Migration PowerShell commandlet 中指定的字符串。
    • ProductVersion - 1.0.1 - 实体框架核心定义的常量

    EF6 __MigrationsHistory 表中不存在 ContextKey 列。也许他们已经删除了它,因为 ContextKey 是多余的,因为您可以在迁移名称中使用 ContextKey。

    【讨论】:

    • 你还没有真正回答这个问题。您刚刚声明 ContextKey 不再存在于迁移表中,但您没有说明原因 - 请参阅下面的答案 - 我花了一个上午的时间研究这个并玩弄。
    猜你喜欢
    • 2016-07-29
    • 2015-12-08
    • 2022-09-27
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多