Skip to content
April 29, 2013 / ahriman hpc mode

Использование Dynamic Data в Windows Azure и SQL Databases

Привет.

Несмотря на то, что многие адепты пишут, что фреймворк Dynamic Data можно использовать в широком спектре сценариев и этот спектр не ограничивается менеджментом данных и rapid-разработкой администраторской панели для этого самого менеджмента, я использую его именно для этой задачи. Ниже описана последовательность действий, которую я прошел для того, чтобы добавить в уже существующий проект Windows Azure веб-роль в виде Web Forms с Dynamic Data.

Итак, у нас уже есть существующий проект Cloud Services, который уже работает в production-ячейке. Для того, чтобы добавить в него новую веб-роль из существующего проекта, нельзя просто взять и сделать это. Сначала нужно добавить в solution новый проект, после чего в оснастке появится новая кнопка.

Создадим проект Dynamic Data. Версия .NET – 4.0. Можно использовать и новее, но конкретно в моем случае остальные проекты в solution используют именно 4.0, поэтому создавать зоопарк я не стал. Хотя хороший повод обновить весь solution Улыбка

image

Уходя немного в тему того, что такое DD и зачем он нужен – очень кратко: фреймворк DD, который можно беспроблемно запустить только в проекте ASP.NET Web Forms (в связи с некоторыми особенностями scaffolding) и довольно проблемно, но всё-таки запустить с MVC, это удобнейшее средство для построения портала менеджмента данных. Достаточно добавить в проект DD после его создания контекст данных EF или Linq-To-SQL, и определить, какие таблицы должны быть доступны для менеджмента, и DD после запуска самого проекта на выполнение будет в runtime создавать страницы этого менеджмента. То есть – запустили проект – появилась страница со списком доступных таблиц – страница сгенерировалась в runtime. Нажали на имя нужной таблицы, перешли на ее страницу – эта страница тоже до момента нажатия не существовала. Нажали на кнопку редактирования записи в этой таблице – перешли на автоматически созданную таблицу. При этом всё это счастье достаточно серьезно кастомизируемо, то есть все – дизайн, кнопки, страницы – можно переделать “под себя”. Единственная проблема – не совсем интуитивно понятно, как подмять этот проект под какую-нибудь аутентификацию, тот же самый Membership. Но об этом, может быть, в следующей статье.

Итак, создали проект. Добавим контекст данных Linq-To-SQL.

image

image

С помощью Server Explorer подключимся к базе данных и перекинем drag’n’drop таблицы из базы данных в дизайнер контекста. Хочу обратить внимание, что в данном случае мы используем базу данных, хранящуюся в SQL Azure Databases. Да, DD, несмотря на некоторые ограничения SQL Azure Databases, умеет использовать базу данных, хранящуюся в этом сервисе. И использовать базу данных SQL Azure Databases можно также, как любую другую базу данных SQL Server.

image

Теперь необходимо подключить контекст данных к фреймворку DD. Для этого в файле Global.asax.cs раскомментируем строку

DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

И поменяем значение ScaffoldAllTables на true – таким образом мы разрешим все таблицы, которые есть в контексте, к менеджменту с использованием портала DD. Здесь же можно указать таблицы выборочно либо добавить к scaffolding таблицы, которых нет в контексте, но это делается с использованием code first и добавления специальных атрибутов к таблице. Позже в runtime эти таблицы будут подключены к общему процессу выполнения.

Также поменяем значение YourDataContextType на имя контекста.

Итого:

DefaultModel.RegisterContext(typeof(DataClasses1DataContext), new ContextConfiguration() { ScaffoldAllTables = true});

Теперь давайте настроим проект для того, чтобы он мог бы быть добавлен как веб-роль к проекту Windows Azure Cloud Services. Для этого в файл проекта csproj добавьте в начало PropertyGroup элемент RoleType.

<PropertyGroup>
  <RoleType>Web</RoleType>

</PropertyGroup>

Таким образом мы укажем, что данный проект можно использовать в качестве добавляемой веб-роли.

Теперь откроем наш solution Cloud Services и добавим созданный только что проект DD в облачный проект. Нажмем правой кнопкой мыши на ветке Roles, после чего выберем Web Role Project in Solution и выберем наш проект.

Всё готово. Теперь можно разворачивать проект.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: