Я пытаюсь использовать ядро .net внутри приложения с несколькими базами данных, я добавил разные dbcontexts и реализовал MyDBConnectionStringResolver, теперь с первым dbcontext все в порядке. Я попытался перенести второй dbcontext, он не генерирует правильный код миграции, я изменил 3 места,
public class MyDBConnectionStringResolver : DefaultConnectionStringResolver
{
public MyDBConnectionStringResolver(IAbpStartupConfiguration configuration) : base(configuration)
{
}
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args)
{
var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder());
switch (args["DbContextType"].ToString())
{
case "*.EntityFrameworkCore.DynamicFormsDbContext":
return configuration.GetConnectionString(DynamicFormsConsts.ConnectionStringName);
case "*.EntityFrameworkCore.WorldDbContext":
return configuration.GetConnectionString(DynamicFormsConsts.ConnectionStringNameRead);
}
return string.Empty;
}
}
//add second dbcontext
Configuration.Modules.AbpEfCore().AddDbContext<WorldDbContext>(options =>
{
if (options.ExistingConnection != null)
options.DbContextOptions.UseMySql(options.ExistingConnection);
else
options.DbContextOptions.UseMySql(options.ConnectionString);
});
Выше // секунда в методе preInitialize.
Затем в * OptionConfigurer
//for the 2nd dbcontext
public static void Configure(DbContextOptionsBuilder<WorldDbContext> builder, string connectionString)
{
builder.UseMySql(connectionString);
}
public static void Configure(DbContextOptionsBuilder<WorldDbContext> builder, DbConnection connection)
{
builder.UseMySql(connection);
}
Add-Migrate -world -C WorldContext -o какая-то папка не работает, как ожидается, чтобы показывать только один dbset, она генерирует все другие сущности в другом dbcontext. Как я могу перенести это и как получить экземпляр dbcontext в модуле AppService?