Технологические требования:
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; }
Должен ли я где-то "зарегистрировать" мой вновь созданный тип? Это вообще возможно? Спасибо!