Как получить доступ к внедренным сервисам в частичном DbContext OnConfiguring? ⇐ C#
Как получить доступ к внедренным сервисам в частичном DbContext OnConfiguring?
При создании шаблона DbContext с помощью dotnet ef dbcontext scaffold инструмент создает частичный класс. Затем я создаю еще одну частичную реализацию DbContext для реализации OnConfiguring (необходимо передать --no-onconfiguring).
Однако теперь я хочу получить доступ к службе из внедрения внедрения внутри метода OnConfiguring, а именно IHttpContextAccessor.
При использовании подхода «сначала код» (без частичных классов) я бы внедрил IHttpContextAccessor в конструктор DbContext, сохранил его в частном поле только для чтения и использовал в методе OnConfiguring.
Похоже, это также работает с частичным DbContext. Мне пришлось сделать это поле обнуляемым только потому, что пустой конструктор, сгенерированный скаффолдингом, не назначил его, выдав предупреждение.
Моя полная реализация выглядит так:
// Частичный DbContext, созданный с помощью scaffolding общедоступный частичный класс MyContext: DbContext { public MyContext (параметры DbContextOptions) : база (варианты) { } // Остальная часть каркасного контекста... } // Мой частичный DbContext общедоступный частичный класс MyContext: DbContext { частный IHttpContextAccessor только для чтения? _httpContextAccessor; общественный SitraDriversContext( Параметры DbContextOptions, IHttpContextAccessor httpContextAccessor) : база (варианты) { _httpContextAccessor = httpContextAccessor; } защищенное переопределение void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { // Используем HttpContext для определения строки подключения } } Мой вопрос заключается в том, правильно ли это делать? Я не понимаю, как DI выбирает правильный конструктор в этом случае.
Я также видел, что в DbContext есть метод GetService, но когда я попытался использовать его в OnConfiguring, я получил исключение, сообщающее, что контекст еще не полностью настроен.
Заранее спасибо.
При создании шаблона DbContext с помощью dotnet ef dbcontext scaffold инструмент создает частичный класс. Затем я создаю еще одну частичную реализацию DbContext для реализации OnConfiguring (необходимо передать --no-onconfiguring).
Однако теперь я хочу получить доступ к службе из внедрения внедрения внутри метода OnConfiguring, а именно IHttpContextAccessor.
При использовании подхода «сначала код» (без частичных классов) я бы внедрил IHttpContextAccessor в конструктор DbContext, сохранил его в частном поле только для чтения и использовал в методе OnConfiguring.
Похоже, это также работает с частичным DbContext. Мне пришлось сделать это поле обнуляемым только потому, что пустой конструктор, сгенерированный скаффолдингом, не назначил его, выдав предупреждение.
Моя полная реализация выглядит так:
// Частичный DbContext, созданный с помощью scaffolding общедоступный частичный класс MyContext: DbContext { public MyContext (параметры DbContextOptions) : база (варианты) { } // Остальная часть каркасного контекста... } // Мой частичный DbContext общедоступный частичный класс MyContext: DbContext { частный IHttpContextAccessor только для чтения? _httpContextAccessor; общественный SitraDriversContext( Параметры DbContextOptions, IHttpContextAccessor httpContextAccessor) : база (варианты) { _httpContextAccessor = httpContextAccessor; } защищенное переопределение void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { // Используем HttpContext для определения строки подключения } } Мой вопрос заключается в том, правильно ли это делать? Я не понимаю, как DI выбирает правильный конструктор в этом случае.
Я также видел, что в DbContext есть метод GetService, но когда я попытался использовать его в OnConfiguring, я получил исключение, сообщающее, что контекст еще не полностью настроен.
Заранее спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Что лучше: разрешить Сервисам доступ к нескольким DAO или только к другим Сервисам
Anonymous » » в форуме JAVA - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
В чем основная разница между «for» и «model» в частичном помощнике тегов в Razor Pages?
Anonymous » » в форуме C# - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-