Как работать с динамической моделью данных в MVC 3 - PullRequest
0 голосов
/ 21 июня 2011

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

Приложение выполняется ASP.Net MVC 3 и SQL Server 2008 R2. Для такого приложения, что бы вы предложили использовать для объектов данных и слоя доступа к данным.

Один из вариантов - просто вернуть таблицы данных из DAL и использовать их. но они были бы нетипизированы. Опция будет заключаться в динамическом создании объектов из набора результатов. но это не очень хорошо работает.

Есть ли другой способ? Код Entity Framework First может быть полезным? А как насчет объектов Expando?

Одна очень важная вещь состоит в том, что приложение имеет большой объем данных, что-то вроде ГБ данных.

1 Ответ

0 голосов
/ 21 июня 2011

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

По моему мнению, приложение, в котором таблицы создаются динамически, не является чем-то, где вы можете ожидать строго типизированный доступ или отличную производительность.Оба эти требования предполагают, что вы пишете код для четко определенного набора классов (определенных во время разработки) и оптимизируете код и доступ к данным для этих классов.В вашем сценарии это невозможно - используйте нетипизированные наборы данных и динамически создаваемые элементы управления с привязкой к данным SQL + ASP.NET и надейтесь, что это будет работать в большинстве случаев.

Редактировать:

Теперь я вижу, что вы хотите использовать MVC3 = нет привязанных к данным элементов управления.Вам придется написать код, проверяющий ваши нетипизированные наборы данных и создающий некоторый пользовательский интерфейс, позволяющий просматривать, редактировать и проверять данные со структурой, которую вы не знаете заранее.Как правило, это означает, что вам нужна ваша собственная метамодель, описывающая вновь созданные таблицы, ограничения, размеры полей, обнуляемые столбцы и т. Д., И используйте эту информацию для создания пользовательского интерфейса и, возможно, также для подготовки нетипизированных наборов данных из этой информации.

...