如何在EntityFramework 7中定义ContextKey?

时间:2015-12-11 16:10:36

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

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

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

以前,Entity Framework在数据库中存储了模型的快照。这导致实体框架每次都必须查询数据库,以便计算出已经运行的迁移。

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

因此,不需要在早期版本的Entity Framework中使用ContextKey。

它只是有效。

答案 1 :(得分:-1)

实体框架核心(v7)的表格__EFMigrationsHistory有两列:

  • MigrationId - 在Add-Migration PowerShell命令行开关中指定的字符串。
  • ProductVersion - 1.0.1 - 由Entity Framework Core定义的常量

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