Использование типов, созданных во время выполнения в C#. Net Core - PullRequest
0 голосов
/ 16 апреля 2020

Технологические требования:

MS SQL DB,. NET Core 3.1, EF Core, C#

То, что должно быть сделано:

Мне нужно создать какое-то решение на основе метаданных в C#, которое должно иметь возможность подключиться к БД, а затем извлечь данные из любой таблицы , определенной в файле JSON, который программа получает в качестве входных данных. В схеме JSON файл перечислены таблицы и столбцы . Например:

{
   schema: 'dbo',
   table: 'customers',
   columns: [
              {
                name: 'FirstName',
                type: 'string'
              },
              {
                name: 'Age',
                type: 'integer'
              }
            ]
}

Решение должно иметь возможность создать класс (Тип) , отражающий потребности текущего файла JSON. После этого ему следует использовать этот новый тип, чтобы установить DbSet<new_type> CustomTypeList { get; set; } в DBContext и впоследствии настроить его на IEntityTypeConfiguration.

Что я уже сделал:

Я использовал код из этого поста и таким образом реализовал некоторый тип RuntimeCustomTypeCreation класса, который возвращает новый type, созданный сразу после начала моей программы, используя System.Reflection и System.Reflection.Emit пространства имен. Новый тип точно отражает структуру, которую заказал нам JSON. Новый экземпляр этого типа теперь может быть легко создан с помощью функции System.Activator.CreateInstance(...).

Проблема, которую я не могу решить:

Как я могу использовать свой недавно созданный runtime-type в моем приложении, как, например, любой класс, написанный как код перед компиляцией и выполнением? Я должен быть в состоянии сделать что-то, как уже написано выше, а именно:

DbSet<new_type> CustomTypeList { get; set; }

Должен ли я где-то "зарегистрировать" мой вновь созданный тип? Это вообще возможно? Спасибо!

...