Dynamic Data, Створення програми динамічних даних
ASP.NET --- Веб-сайти ASP.NET --- Створення програми динамічних даних
Динамічні дані (Dynamic Data) ASP.NET дозволяють швидко та з невеликими зусиллями створювати веб-додатки, орієнтовані на дані. Шаблонні сторінки заповнюються за рахунок виведення інформації про типи зі схеми моделі даних, і при цьому необхідний або невеликий обсяг кодування, або взагалі ніякого. Кількість функціональних можливостей, які можна отримати за якихось 15 хвилин роботи, може виявитися досить значним, а як тільки основні засоби створені, стають доступними для налаштування безліч опцій.
Знайомство з динамічними даними ASP.NET найкраще розпочати із створення прикладу веб-сайту. Тільки так можна переконатися, наскільки легко отримати готовий до використання сайт і скільки при цьому відкривається можливостей. У прикладах буде використовуватися зразок бази даних Microsoft Northwind.
Центральною частиною веб-сайту ASP.NET динамічних даних є модель бази даних. Цю модель можна згенерувати за допомогою LINQ to SQL або платформи Entity Framework. Ми будемо використовувати LINQ to SQL. Основний підхід до обробки динамічних даних залишається незмінним незалежно від того, яка технологія застосовується для проектів.
Створення сайту динамічних даних
Насамперед знадобиться створити новий проект динамічних даних ASP.NET. У Visual Studio виберіть пункт меню File --> New --> Website. Вкажіть шаблон Dynamic Data Linq to SQL Web Site (Веб-сайт Linq to SQL динамічних даних ASP.NET), як показано на малюнку нижче. Натисніть кнопку OK, щоб створити проект.

Щоб створити модель даних, яку використовуватиме система динамічнихданих, клацніть правою кнопкою миші на значку веб-сайту у вікні Solution Explorer, у контекстному меню виберіть пункт Add New Item (Додати новий елемент) і в списку шаблонів вкажіть шаблон LINQ to SQL Classes (Класи LINQ to SQL). Оскільки в цьому прикладі використовується база даних Northwind, назвіть новий елемент Northwind.dbml. Відкриється діалогове вікно попередження, яке пропонує помістити класи LINQ to SQL у папку App_Code, яке показано на малюнку нижче:

Натисніть кнопку Yes (Так). У проекті буде створено файл Northwind.dbml і відкриється вікно візуального конструктора відносин між об'єктами. Тепер модель даних необхідно заповнити потрібними таблицями бази даних. Розгорніть елемент Northwind Tables (Таблиці Northwind) на панелі Server Explorer і перетягніть таблиці Customers, Orders, Order_Details та Products у вікно візуального конструктора. Вікно Visual Studio має набути вигляду, показаного на малюнку нижче, відображаючи таблиці, які були імпортовані в модель даних, та відносини зовнішнього ключа між ними.

Зміна типу веде до реєстрації моделі даних. Зміна значення властивості ScaffoldAllTable вказує на систему динамічних даних ASP.NET, що всі чотири таблиці, які були включені в модель даних, повинні відображатися у веб-додатку. Ось і все – сайт динамічних даних ASP.NET створений. Результат аналізується у наступному розділі.
Аналіз сайту динамічних даних

Те, що ми бачимо, є формування шаблонів - система динамічних даних ASP.NET витягла чотири таблиці з моделі даних і побудувала структуру навколо них. Сторінка за замовчуванням сайту, якою є Default.aspx, містить посилання для кожної таблиці.
Клацніть на Customers. Відкриється сторінка,яка містить перші десять записів з таблиці Customers бази даних Northwind, як показано на малюнку нижче:

Система динамічних даних ASP.NET створила таблицю з даних. Як бачите, стовпці таблиці на веб-сторінці відповідають стовпцям таблиці Customers у базі даних.
Автоматично створений шаблон підтримує низку цікавих можливостей. У нижній частині екрана можна змінювати кількість записів на сторінці. Також можна переміщатися між сторінками або переходити до конкретної сторінки. У лівій частині кожного рядка розташовані три посилання - Edit (Правка), Delete (Видалення) та Details (Відомості). Клацніть посилання Edit призводить до відкриття нової сторінки, на якій можна редагувати запис (і зберегти зміни, клацнувши на посилання Update (Оновити)). Посилання Details відображає аналогічну сторінку, але без зміни даних. Посилання Delete, як легко здогадатися, дозволяє видаляти записи з бази даних. Клацніть на заголовку одного зі стовпців призводить до сортування даних з використанням цього стовпця як ключ.
Погляньте на праву частину вікна браузера. Система динамічних даних ASP.NET виявила, що таблиці Customers та Orders пов'язані ставленням зовнішнього ключа, і автоматично додала посилання View Orders (Перегляд Orders) для кожного запису. Клацніть на одному з цих посилань веде до відображення сторінки, яка містить усі замовлення обраного замовника:

Клацніть посилання Back to home page (Повернутися до домашньої сторінки), щоб повернутися до списку таблиць, та клацніть посилання Orders. Зверніть увагу, що ця сторінка містить список Customer (Замовник), що розкривається, як показано на малюнку нижче. Список, що розкривається, містить імена всіх замовників, і вибір замовника наводитьдля фільтрації даних на сторінці для відображення замовлень тільки для цього замовника.

Структура проекту динамічних даних ASP.NET
Згенерувавши модель даних, а також змінивши всього один рядок коду, ми змогли створити веб-додаток, який представляє таблиці з бази даних – причому робить це розвиненим та зручним способом. Ми отримали повну підтримку операцій CRUD та розумне застосування зовнішніх ключів, що робить інтерфейс зручнішим у використанні. Динамічні дані ASP.NET пропонують дуже прогресивний підхід.
Тепер, коли вже відомо, як виглядає програма динамічних даних ASP.NET, настав час придивитися до проекту, щоб зрозуміти, як функціонують його основні компоненти.
Система динамічних даних ASP.NET не є інструментом генерації коду, як це здавалося. Насправді вона є дуже гнучкою і конфігурованою системою шаблонів. Знайомство з її роботою можна розпочати з вікна Solution Explorer поточного проекту Visual Studio.
Каталог App_Code містить код програми. Поки що там немає нічого крім класів моделі даних, але ми додамо певний код, коли почнемо налаштовувати сайт у наступних розділах. Папка App_Data містить джерело даних.
DynamicData папка представляє більший інтерес. Розгорніть її у вікні Solution Explorer, а потім відкрийте папку PageTemplates, як показано на малюнку нижче: