Динамически генерировать модель на основе таблицы SQL в ASP.Net

Я пытаюсь создать модель, которую можно динамически строить «на лету» на основе таблицы SQL. Я не буду заранее знать таблицу SQL, поэтому модель должна быть динамической. Слишком много возможных таблиц, чтобы было возможно предварительно построить модель для каждой из них. Я хотел бы, чтобы пользователь мог пройти, выбрать таблицу из списка, а затем на основе этой таблицы была сгенерирована модель. Мы будем очень благодарны за любое понимание или направление. Спасибо

Модель обычно строго типизирована и поэтому известна во время сборки. Кто ваши пользователи? Разработчики или пользователи приложений?

Stefan 19.06.2018 20:41

Вы понимаете, что добавление класса (Model) потребует перестройки приложения? Вы думали о разработке Entity Framework DB First?

Mad Myche 19.06.2018 20:49

Это довольно широкий вопрос, поэтому вот такое же широкое предложение (не ответ): многие CMS (например, Sitefinity) позволяют создавать собственные типы контента для Интернета. Затем он создаст своего рода документ схемы, который будет сохраняться и загружаться каждый раз при запуске приложения, чтобы иметь возможность ссылаться на таблицы. Они используют открытый доступ как ORM. Я не уверен, является ли эта функция функцией открытого доступа или они просто надстраиваются на нее. Другие CMS должны делать аналогичные вещи ("на лету" типы контента). Все такие созданные модели должны будут наследоваться от одного и того же типа для CRUD.

Jonathan 19.06.2018 21:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
488
1

Ответы 1

Я могу придумать несколько немного разных подходов. Все будут рассматривать генератор кода (например, инструмент текстового шаблона T4)

Один из подходов, который мы использовали, заключался в отображении всех определений столбцов и таблиц в отдельных собственных таблицах в базе данных. Это не обязательно, поскольку вы можете использовать Information_Schema базы данных для получения информации, необходимой для простой модели. Но! Как только вам понадобится дополнительная информация (это более вероятно) для столбцов и таблиц, я бы подумал о том, чтобы сопоставить их как собственные Datarecords в собственных таблицах.

Под конкретным я подразумеваю под определением столбца и таблицы информацию, необходимую для создания моделей. Например. Таблица DialogColumn имела такие столбцы, как Columnname (nVarchar), displayname (nVarchar), recordhistory (bit), UID_Dialogtable и некоторые другие «метаданные», которые представляли свойство модели. Таблица, давайте назовем ее также Dialogtable, а затем все свойства, например. имя таблицы, отображаемое имя, onsavingscript и т. д.

Обладая этой информацией, вы можете создавать машинные обертки в виде моделей. предпочтительно создавать их на предварительном этапе процесса сборки компилятора или только один раз (в зависимости от вашей архитектуры). Для расширения и изменения структуры модели вы можете написать отдельный инструмент, который управляет записью таблицы и столбцов в базе данных за вас и компилирует нужную вам сборку.

и так далее и тому подобное

Другие вопросы по теме