以前,我有一些代码如下:
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命令失败。
有人对我如何解决这个问题有任何建议,因为这对我来说有点新?