Построение расширяемой модели данных, EF 4 - PullRequest
5 голосов
/ 07 июня 2011

У меня есть вопрос, очень похожий на этот, Как построить расширяемую модель данных , касающуюся построения приложения с использованием расширяемой модели данных, за исключением использования EF 4.

Мое требование - разрешить пользователям моего приложения расширять модель данных во время выполнения на лету. В настоящее время мы ведем сборку системы и используем EF в качестве слоя DAL с классами POCO, сгенерированными из стандартного шаблона T4.

Взяв этот пост Ayende, http://ayende.com/blog/3498/multi-tenancy-extensible-data-model, в качестве краткого изложения вариантов, мы взяли опцию столбца xml в таблице, что позволяет нам помещать в нее практически все, без необходимости перекомпиляции .

Насколько я понимаю, подход с расширенными таблицами был бы лучше, он, кажется, довольно хорошо работает для динамического CRM, однако, как / было бы это возможно при использовании EF 4 на лету?

Ответы [ 3 ]

1 голос
/ 07 июля 2011

Одним из возможных решений этой задачи является EAV Pattern> http://en.wikipedia.org/wiki/Entity-attribute-value_model

0 голосов
/ 08 июля 2011

Возможно, вы захотите посмотреть Продвижение свойств XML как способ ускорить доступ к свойствам, которые вы определили в XML.

0 голосов
/ 07 июля 2011

Один из подходов, который я использовал в прошлом, - это создание общих столбцов, например, int1, int2, ... intn, varchar1, varchar2, ..., varcharn и т. Д. Это имеет свои преимущества и недостатки. Это не чистый от БД, соответственно (некоторые администраторы будут в ужасе). Но с SQL Severs поддержка разреженных столбцов не является проблемой. Таким образом, вы можете иметь действительно широкий стол. Но вам нужно будет хранить метаданные где-нибудь, например, varchar1 -> Name, int1 -> Age и т. Д.

Теперь вы можете писать обычные запросы sql / ef, поиск стал проще, SSRS прост (без разбора xml).

Я тоже хотел бы знать, есть ли лучшее решение.

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