У меня есть ASP.Net Core
приложение командной строки, в котором я пытаюсь скопировать данные из одной базы данных из другой.Поэтому в идеале я хотел бы иметь что-то вроде этого
services.AddDbContext<IdentityDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FromConnection")));
services.AddDbContext<IdentityDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ToConnection")));
Очевидно, это не сработает, так как тип в общем является тем же. Если Я мог бы сделать что-то вроде этого:
var fromContext = new IdentityDbContext<IdentityUser>();
var toContext = new IdentityDbContext<IdentityUser>();
services.AddDbContext(fromContext, options => options.UseSqlServer(Configuration.GetConnectionString("FromConnection")));
services.AddDbContext(toContext, options => options.UseSqlServer(Configuration.GetConnectionString("ToConnection")));
Это небольшая служебная программа;так что я могу пойти на компромисс (в некоторой степени) по внедрению зависимости - есть ли способ сделать это?
В этом случае я пытаюсь скопировать роли и утверждения из таблиц идентификации;поэтому та же проблема с классами IdentityRole
и IdentityRoleClaim
- но первым шагом является отдельная настройка DbContext
.
ОБНОВЛЕНИЕ: Если бы я использовал производные классы из DbContext
, например, так:
public class IdentityFromDbContext : IdentityDbContext<IdentityUser> { ... }
public class IdentityToDbContext : IdentityDbContext<IdentityUser> { ... }
Затем мне нужно следующее:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<Identity???DbContext>()
И если бы я получил IdentityFromUser
и т. Д., Я бы столкнулся с проблемой, что мне нужно изменить модель приложениясам