В нашем приложении мы рассматриваем использование динамически генерируемых классов для хранения многих наших данных. Причина этого заключается в том, что у нас есть клиенты с таблицами, которые имеют разные структуры. Таким образом, у вас может быть таблица клиентов под названием «DOG» (только для этого), которая содержит столбцы «DOGID», «DOGNAME», «DOGTYPE» и т. Д. Клиент № 2 может иметь одну и ту же таблицу «DOG» с колонками " DOGID "," DOG_FIRST_NAME "," DOG_LAST_NAME "," DOG_BREED "и т. Д. Мы не можем создавать классы для них во время компиляции, так как клиент может изменить схему таблицы в любое время.Заполнение и использование динамических классов в C# /. NET 4.0
На данный момент у меня есть код, который может генерировать класс «DOG» во время выполнения с использованием отражения. Я пытаюсь выяснить, как заполнить этот класс из DataTable (или какого-либо другого механизма .NET) без особых штрафных санкций. У нас есть одна таблица, содержащая ~ 20 столбцов и ~ 50 тыс. Строк. Выполнение foreach по всем строкам и столбцам для создания коллекции занимает около 1 минуты, что слишком мало.
Я пытаюсь найти решение, которое слишком сложно или я на правильном пути? Кто-нибудь еще испытывал такую проблему? Создание динамических классов было решением, предлагаемым разработчиком Microsoft. Если мы сможем просто заполнить эту коллекцию и эффективно использовать ее, я думаю, что она может работать.
Для того, чтобы сделать заметку, клиент может получить схему таблицы «на лету», поэтому ОРМ не будет работать.Мы не можем перекомпилировать и переиздавать приложение каждый раз, когда клиент производит изменение базы данных. Однако мы не можем полагаться на DataTable, поскольку он слишком медленный с большими объемами данных. –