实体框架核心Idesigntimecontext

时间:2019-06-04 15:39:23

标签: asp.net-core entity-framework-core

以前,我有一些代码如下:

public class TemporaryDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
{
    private readonly IHttpContextService httpContext;
    public MyDbContext CreateDbContext(string[] args)
    {
        var connectionString = ""; //connection string removed        
        var builder = new DbContextOptionsBuilder<MyDbContext>();
        builder.UseSqlServer(connectionString,
            optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(MyDbContext).GetTypeInfo().Assembly.GetName().Name));
        return new MyDbContext(builder.Options, httpContext);
    }
}

不确定上面的代码来自哪里。.尽管在Visual Studio的程序包管理器控制台中添加迁移并执行更新数据库时,它仍然有效。

虽然我已经向MyDbContext类添加了一些服务(通过构造函数DI添加),但我在onconfiguring方法中使用了这些服务,例如:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var tenant = _tenantProvider.GetTenant();
        ConnectionString = _encryptionService.Decrypt(tenant.EncryptedConnectionString);

        optionsBuilder.UseSqlServer(ConnectionString);            
        base.OnConfiguring(optionsBuilder);
    }

并且由于对象未设置为tenantProvider中的对象实例,我的update-database命令失败。

有人对我如何解决这个问题有任何建议,因为这对我来说有点新?

0 个答案:

没有答案