Как добавить DBContext к сервисам из другой сборки - PullRequest
0 голосов
/ 15 апреля 2020

on. net core 2.1, я загрузил сборку в приложение, используя

services.AddMvcCore().AddApplicationPart([Assembly])

Но сборка содержит контекст БД, проблема в том, что я не могу загрузить DBContext из сборка, аналогичным способом загрузки контроллеров. Обычно мы добавляем контекст БД, используя

services.AddDbContext<[DBCOntextType]>([options]);

Я не могу передать тип этой функции (AddDBContext), используя отражение следующим образом:

 System.Reflection.MethodInfo method = services.GetType().GetMethod("AddDbContext",System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);

Переменная метода всегда равна нулю.

Также, если сборка содержит файл startup.cs, я не могу запустить этот запуск вместе с запуском основного приложения.

Пожалуйста, дайте мне знать, если есть решение. Спасибо

1 Ответ

0 голосов
/ 15 апреля 2020

Решением было решение с отражением, поскольку @thehenny направил меня в правильном направлении

Вот код, предполагающий, что вы уже загрузили тип dbContextType из сборки

var type = typeof (Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions);
                System.Reflection.MethodInfo method = type.GetMethods().Where(i=>i.Name  == "AddDbContext" 
                && i.IsGenericMethod==true).FirstOrDefault();

System.Reflection.MethodInfo generic = method.MakeGenericMethod(dbContextType);

Action<DbContextOptionsBuilder> action = new Action<DbContextOptionsBuilder>(options =>[Your Options]);
object[] parametersArray = new object[] { services, action,null,null };
generic.Invoke(services, parametersArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...