сначала , я построил приложение со всеми необходимыми контекстами:
Код: Выделить всё
builder.Services.AddDbContext(options => options.UseMySql(conection1, ServerVersion.AutoDetect(conection1)));
builder.Services.AddDbContext(options => options.UseMySql(conection2, ServerVersion.AutoDetect(conection2)));
builder.Services.AddDbContext(options => options.UseMySql(conection3, ServerVersion.AutoDetect(conection3)));
....
Код: Выделить всё
namespace Project.Models
{
public class Context1 : Context0
{
public Context1(DbContextOptions options): base(options)
{
}
public DbSet Table1 { get; set; }
public DbSet Table2 { get; set; }
// ....
}
}
namespace Project.Models
{
public class Context2 : Context0
{
public Context2(DbContextOptions options): base(options)
{
}
public DbSet Table1 { get; set; }
public DbSet Table2 { get; set; }
// ....
}
}
Код: Выделить всё
namespace Project.Models
{
public class Context0 : DbContext
{
public Context0(DbContextOptions options): base(options)
{
}
public DbSet Table1 { get; set; }
public DbSet Table2 { get; set; }
// ....
}
}
третий , моя цель - использовать Context0 на моем контроллере после назначения правого введенного контекста:
Код: Выделить всё
namespace Project.Controllers
{
public class HomeController : Controller
{
private Context0 MainContext;
private readonly Context1 InjectedContext1;
private readonly Context2 InjectedContext2;
private readonly Context3 InjectedContext3;
// ....
public HomeController(Context1 context1,
Context2 context2,
Context3 context3,
....)
{
InjectedContext1 = context1;
InjectedContext2 = context2;
InjectedContext3 = context3;
// ....
if (some condition)
{
MainContext = InjectedContext2;
}
}
}
}
system.argumentnullexception: 'значение не может быть нулевым. Строка: < /p>
Код: Выделить всё
Data1 = MainContext.Table1.ToList();
Однако (это важно):
< br/> [*] #1 : incededContext2 правильно назначен для MainContext (я вижу это во время выполнения)
[*] #2 : инъекционное управление 2 правильно вводится в контроллер (когда я пишу injectedContext2.table1.tolist ()
Подробнее здесь: https://stackoverflow.com/questions/794 ... -net-mvc-c