首页 > 解决方案 > EntityFramework更新数据库多个数据库上下文添加表不创建数据库

问题描述

我有两个独立的数据库上下文,并希望每个数据库上下文都有一个数据库。当我进行 entityfirst 迁移时,为什么不创建单独的数据库?相反,一个数据库上下文是在另一个上下文中创建一个表,即使我明确指定了 -context 参数。

appsetting.json

"ConnectionStrings": {
"BuildAppDb": "Server=DESKTOP-BJR3FMP\\SQLEXPRESS;Database=EasyBuilderApp;Trusted_Connection=True;",
"LicenseKeyDb": "Server=DESKTOP-BJR3FMP\\SQLEXPRESS;Database=EstiframeSoftwareLicenser;Trusted_Connection=True;"

},

上下文

    public partial class BuildAppDbContext : DbContext
{
    public BuildAppDbContext(DbContextOptions<BuildAppDbContext> options)
        : base(options)
    {

    }


    public DbSet<PartCompletion> PartCompletions { get; set; }
}

public class LicenseKeyDbContext : DbContext
{
    public LicenseKeyDbContext(DbContextOptions<LicenseKeyDbContext> options)
        : base(options)
    {

    }

    public DbSet<LicenseReg> RegLicenses { get; set; }

}

startup.cs 配置服务

//DATABASE CONNECTIONS
        string connectionString = _configuration.GetConnectionString("LicenseKeyDb");
        services.AddDbContext<LicenseKeyDbContext>(options => options.UseSqlServer(connectionString));

        connectionString = _configuration.GetConnectionString("BuildAppDb");
        services.AddDbContext<BuildAppDbContext>(options => options.UseSqlServer(connectionString));

包管理器控制台命令

add-migration -context BuildAppDbContext
update-database -context BuildAppDbContext
add-migration -context LicenseKeyDbContext
update-database -context LicenseKeyDbContext

结果 ??为什么

当它应该为 EstiframeSoftwareLicenser 数据库添加整个数据库时,它正在向 EasyBuilderApp 数据库添加一个表

在此处输入图像描述

标签: entity-framework-core

解决方案


我发现了我的问题。

我真的不得不在这里使用一个单独的字符串变量:

.AddDbContext 方法稍后执行,而不是在那一刻执行,因此使用相同的变量来存储连接字符串不起作用。

在此处输入图像描述


推荐阅读