使用EF6 Code First跨多个DbContext类的单个表

时间:2014-10-09 19:26:04

标签: entity-framework ef-code-first code-first ef-migrations

在我的应用程序中,我有两个针对同一SQL数据库的上下文。一个上下文用于我的AspNet Identity表,另一个用于应用程序的其余部分。我想要做的是让我的用户&#39;我的IdentityUser中提供的表格(适用于IdentityDbContext中的ApplicationContext类)。我正在使用Code First Migrations,并且不希望ApplicationContext尝试创建(或修改)该表 - 我只是想让它知道&#39;关于它,并能够查询并将其连接到其他表,但希望它被MigrateDatabaseToLatestVersion<ApplicationContext, Configuration>()初始化程序忽略或从程序包管理器控制台发出update-database时。

我发现了一些类似的问题,但没有合适的答案。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我认为,您必须创建一个单独的DbContext,其中包含所有DbSet中的所有DbContext,并使用此主DbContext进行迁移。 如果您希望某些实体在某些上下文中是只读的(在您的情况下为User),您可以将以下内容定义为DbSet

public ApplicationContext:DbContext
{
    ...
    public DbSet<User> Users { get; private set; }
}
{p> private设置DbSet因为Entity Framework可以设置,但不能由用户设置。