Как скопировать / клонировать DbContextOptions <AContext>в DbContextOptions <BContext>? - PullRequest
1 голос
/ 14 января 2020

Настройка: один дБ со многими таблицами, сгруппированные по модулям ModuleTableGroups независимы, между ними нет взаимосвязей.

Дизайн: 1: У каждого модуля есть свой Контекст, чтобы они были маленькими и четкими. 2: Поскольку это очень старая База данных с ручным администрированием PKeys и последовательностей, должна быть возможность вложить SaveChanges при обработке этих вещей в контексте. Например, AContext имеет таблицу с сущностью, у которой есть ValueGenerator, который считывает увеличенное значение из таблицы. Поскольку это должно быть завершено до вызова AContext.SaveChanges (), это должно быть сделано в отдельном SeqContext в том же БД, который может обработать проблемы параллелизма, которые могут возникнуть. SeqContext зависит от DbOptionsContext AContext.

Пожелания: 1: Вместо создания опций для каждого контекста, который необходим в настоящее время, поскольку кажется, что контекст принимает только контекстные опции c, я бы хотел либо используйте один и тот же DbContextOptions для многих контекстов, либо скопируйте или приведите параметры к новому.

DbContextOptions<AContext> aContextOptions = new DbContextOptionsBuilder<AContext>(). . .Options;

// casting:
DbContextOptions<BContext> bContextOptions = (DbContextOptions<BContext>) aContextOptions;

// copy construction:
DbContextOptions<BContext> bContextOptions = new DbContextOptionsBuilder<BContext>(aContextOption).Options;

2: из-за зависимости SeqContext от AContext, особенно в сценарии тестирования ios, было бы полезно сделать что-то внутри AContext вроде:

SeqContext = new SeqContext((DbContextOptions<SeqContext>) this.getOptions());

Вы можете понять идею. Как я могу архивировать, чтобы обмениваться вариантами между различными TContext прямо сейчас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...