ранее у меня был какой-то код, который был следующим:
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);
}
}
не уверен, откуда взялся этот код выше ... это работало, хотя при добавлении миграций и выполнении update-database в консоли диспетчера пакетов в 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);
}
и моя команда update-database завершается неудачно из-за того, что объект не установлен как экземпляр объекта в tenantProvider.
Кто-нибудь получил какие-либо предложения, как я могу это исправить, так как это немного ново для меня?