代码之家  ›  专栏  ›  技术社区  ›  Matthew Verstraete Rjev

设置多个adddbContext()选项的正确方法?

  •  1
  • Matthew Verstraete Rjev  · 技术社区  · 7 年前

    我将我的站点解决方案拆分为多个项目,其中一个项目具有用于数据库的类。当我尝试生成第一个迁移时,我得到以下错误:

    实体框架核心2.0.3-rtm-10026已初始化“sitedbContext” 正在使用提供程序“microsoft.entityframeworkcore.sqlserver”,选项为: 无

    使用dbContextOptionsBuilder更改迁移程序集。例如。 选项。使用sqlserver(连接,b=> b.迁移组件(“”)。默认情况下,迁移 程序集是包含dbContext的程序集。

    将目标项目更改为迁移项目,方法是使用 包管理器控制台的默认项目下拉列表,或按 从包含迁移的目录执行“dotnet ef” 项目。

    目标项目“”与迁移不匹配 程序集“”。要么改变你的目标项目要么改变 您的迁移程序集。

    使用dbContextOptionsBuilder更改迁移程序集。例如。 选项。使用sqlserver(连接,b=> b.迁移组件(“”)。默认情况下,迁移 程序集是包含dbContext的程序集。改变你的目标 使用包管理器将项目迁移到迁移项目 控制台的默认项目下拉列表,或通过执行“dotnet ef” 来自包含迁移项目的目录。

    我想加上这个 MigrationsAssembly 选项沿着我的连接字符串命令,但无法确切地知道如何执行。

    我当前的代码是:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB")));
        }
    

    我尝试过:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB"), options.MigrationsAssembly("FFInfo.DAL")));
        }
    

    但我得到了错误

    dbContextOptionsBuilder不调用MigrationsAssembly的定义

    添加第二个选项的正确方法是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Camilo Terevinto Chase R Lewis    7 年前

    您非常接近,但第二级配置是通过 Action<SqlServerDbContextOptionsBuider> 而不是通过原版 Action<DbContextOptionsBuilder> options 参数。

    所以,使用这个:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB"), sqlServerOptions => sqlServerOptions.MigrationsAssembly("FFInfo.DAL")));
    }