Как динамически изменять поля в .NET ORM - PullRequest
0 голосов
/ 07 мая 2010

Я работаю в ASP.NET в приложении, где часто пользователи хотят добавлять поля или менять имена полей.

Я бы хотел иметь возможность проанализировать XML-схему и создать из нее динамическую объектную модель, к которой можно обращаться через приложение.

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

Даже если приложение перекомпилировано, я не знаю, как достаточно абстрагироваться в моем коде от доступа к данным, чтобы пользователи могли изменять имена свойств и т. Д. Как вы можете написать LINQ, когда свойства могут измениться?

Короче говоря, здесь есть два вопроса: 1) есть ли способ динамически генерировать объектную модель базы данных и 2) есть ли способ абстрагироваться достаточно, чтобы код, обращающийся к базе данных, не нарушался при изменении свойств

1 Ответ

0 голосов
/ 07 мая 2010

1) есть ли способ динамически создать объектную модель базы данных

Да

2) есть ли способ абстрагироваться достаточно, чтобы код доступа к база данных не ломается, когда свойства изменить?

Да

Но вы не хотите ORM для этого сценария. Возможно, вам даже не понадобится реляционная база данных, так как реляционная база данных мало что для вас сделает.

Возможно, вы захотите заглянуть в базу данных документов или объектов. Найти тот, который поддерживает Linq, будет сложно.

По сути, вы и ваши клиенты должны понимать, что это не традиционное приложение для реляционных баз данных. Вы создаете что-то, что было построено раньше, но не по-настоящему массовым способом. Скорее всего, вы будете открывать новые пути чаще, чем повторно использовать готовые технологии и шаблоны.

Это может быть интересный проект, если вам нравятся его новые аспекты, или кошмар, если ваши клиенты ожидают, что решение будет таким же легким и готовым, как стандартное реляционное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...