Настройка уровня динамических данных ASP.NET

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

ПримечаниеПримечание

Сведения об общей настройке уровня представления данных, не связанной с базами данных, см. в разделе Настройка уровня представления динамических данных ASP.NET.

В этом разделе содержатся следующие подразделы.

При создании нового проекта в Visual Studio 2010 можно выбрать шаблон Классы LINQ-SQL или ADO.NET Entity Data Model. Этот выбор определяет тип модели, используемой в проекте. В модели данных ASP.NET представляет сущности данных в виде типов среды CLR. Платформа динамических данных использует эти типы для отправки запросов в базу данных и для выполнения операций создания, чтения, обновления и удаления. Модели также обеспечивают интеграцию бизнес-логики.

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

  • Сведения о связях между таблицами для отображения столбцов внешнего ключа и обеспечения переходов между таблицами.

  • Сведения о типах данных используются для добавления проверки, а также для выбора соответствующих шаблонов полей для поля данных. Например, сведения о столбцах, допускающих пустое значение, могут использоваться для определения необходимости заполнения данного поля. Сведения о длине могут использоваться для ограничения максимальной длины вводимого пользователем текста. Тип данных поля используется для определения шаблона поля, используемого для отображения его пользовательского интерфейса.

Модели LINQ to SQL и Entity Framework имеют много общих функций. При этом каждая из них содержит функции, предназначенные для различных сценариев. Модель LINQ to SQL в большей степени направлена на быструю разработку приложений в соответствии с существующей схемой Microsoft SQL Server. Платформа Entity Framework предоставляет объекты и доступ к базам данных SQL Server, а также к сторонним базам данных на уровне хранения.

Запросы из LINQ в SQL

Модель LINQ to SQL содержит возможности, предназначенные для работы с базой данных Microsoft SQL Server. Она предоставляет строго типизированное представление существующей схемы базы данных. Модель LINQ-to-SQL поддерживает непосредственное взаимно-однозначное сопоставление существующей схемы базы данных классам .NET Framework. Одна таблица может быть сопоставлена одному классу, а внешние ключи могут представляться как строго типизированные отношения.

LINQ to SQL позволяет создавать запросы LINQ по таблицам, представлениям и другим объектам, а затем возвращать результаты в виде строго типизированных объектов. Кроме того, возможен вызов хранимых процедур, которые возвращают строго типизированные результаты с помощью строго типизированных методов. Основной принцип проектирования модели LINQ-to-SQL состоит в том, что она работает в большинстве общих случаев. Дополнительные сведения см. в разделе LINQ to SQL.

ADO.NET Entity Framework

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

Например, можно сопоставить один класс (или сущность) нескольким таблицам или представлениям либо сопоставить несколько классов одной таблице или представлению. Можно также сопоставить иерархию наследования одной таблице или представлению (как и в LINQ-to-SQL) или нескольким таблицам или представлениям. Такое гибкое сопоставление определяется декларативно и не требует повторной компиляции приложения при изменении схемы базы данных.

Платформа Entity Framework включает в себя модель LINQ to Entities, содержащую многие возможности LINQ to SQL. Дополнительные сведения см. в разделе ADO.NET Entity Framework.

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

Для отрисовки типа данных платформа динамических данных выполняет в модели данных поиск классов с примененным атрибутом UIHintAttribute. Если атрибут существует, то он указывает шаблон полей, который следует использовать для отображения пользовательского интерфейса определенного типа поля данных. Если атрибут отсутствует, платформа динамических данных выполняет поиск шаблона полей, имя которого совпадает с типом поля данных. Дополнительные сведения о шаблонах см. в разделе Формирование шаблонов динамических данных ASP.NET.

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

Платформа динамических данных по умолчанию поддерживает проверку полей на основе метаданных со следующими правилами.

  • Проверка обязательных полей. Если поле данных не может иметь значение null, платформа динамических данных принудительно обеспечивает ввод значения в это поле.

  • Проверка длины. Если поле данных имеет строковый тип, платформа динамических данных принудительно ограничивает максимальную длину поля.

  • Проверка типа. Платформа динамических данных принудительно обеспечивает соответствие введенного пользователем значения встроенному типу данных поля.

Дополнительные сведения о проверке в модели данных можно предоставить с помощью атрибутов System.ComponentModel.DataAnnotations и путем создания методов проверки:

  • Настройка проверки для отдельных полей данных путем применения к полям атрибутов System.ComponentModel.DataAnnotations платформы динамических данных. Эти атрибуты определяют распространенные схемы проверки, такие как проверка на принадлежность диапазону и на наличие данных в обязательных полях. Этим способом следует воспользоваться для добавления проверки в дополнение к проверке платформы динамических данных, а также в том случае, если атрибутов System.ComponentModel.DataAnnotations достаточно для конкретной ситуации. Дополнительные сведения см. в разделе Практическое руководство. Настройка проверки полей данных в модели данных.

  • Настройка проверки для отдельных полей данных путем создания пользовательских атрибутов проверки. Этот способ позволяет расширить проверку, обеспечиваемую атрибутами System.ComponentModel.DataAnnotations. Такой подход удобен, когда существующие атрибуты не соответствуют требованиям, предъявляемым к проверке определенного поля данных.

  • Настройка проверки для отдельных полей путем переопределения метода OnValidate или обработки события Validate, которые возникают при изменении любого поля данных. Такой подход позволяет добавить логику проверки и бизнес-логику для отдельного поля. Это более общий подход, чем добавление проверки для отдельного поля. Им удобно пользоваться, когда требуется применить одну и ту же логику проверки к нескольким полям данных. Кроме того, он позволяет выполнять проверки, в которых задействованы несколько полей.

Дополнительные сведения см. в разделе Практическое руководство. Настройка проверки полей данных в модели данных с использованием настраиваемых атрибутов.

Вызов ошибок проверки

Атрибуты System.ComponentModel.DataAnnotations позволяют создавать настраиваемые ошибки или использовать встроенные ошибки при неудачном завершении проверки. Поэтому атрибуты проверки поддерживают все нижеперечисленные параметры ошибок.

  • ErrorMessage . Этот параметр определяет сообщение об ошибке, связанное с проверяющим элементом управления. Его можно использовать для определения нелокализуемого пользовательского сообщения об ошибке и для возможного переопределения заданного по умолчанию локализуемого сообщения.

  • ErrorMessageResourceName . Этот параметр определяет ресурс сообщения об ошибке, связанный с проверяющим элементом управления. Его можно использовать для определения файла ресурсов, содержащего локализуемые сообщения об ошибках.

  • ErrorMessageResourceType . Этот параметр определяет тип сообщения об ошибке, связанного с проверяющим элементом управления. Его можно использовать для идентификации сообщения об ошибке, определенного в файле ресурсов. Файл ресурсов определяется с помощью параметра ErrorMessageResourceName.

Сообщения об ошибках проверки можно настроить следующими способами:

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

  • Можно предоставить нелокализуемое пользовательское сообщение об ошибке, переопределяющее заданное по умолчанию сообщение, с использованием параметра ErrorMessage.

  • Можно предоставить файл ресурсов локализуемых сообщений об ошибках с использованием параметра ErrorMessageResourceName. Затем следует указать сообщение об ошибке, содержащееся в файле ресурсов, с использованием параметра ErrorMessageResourceType.

Применение атрибутов в пространстве имен System.ComponentModel.DataAnnotations к полям в модели данных позволяет расширить модель путем предоставления сведений, используемых платформой для настройки сущностей данных. В следующей таблице представлены атрибуты и способы их использования.

Сценарий

Атрибут и описание

Указание имени типа данных, который является более конкретным по сравнению с простейшим типом поля данных.

Атрибут DataTypeAttribute позволяет отметить поля с помощью типа, который более специализированный, чем встроенный тип базы данных. Имя типа, выбранное на основе типа перечисления DataType.

Дополнительные сведения см. в разделе Практическое руководство. Настройка внешнего вида и поведения полей данных для невстроенных типов данных в модели данных.

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

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

Настройка отображения и форматирования поля данных.

Метод

Атрибут DisplayFormatAttribute позволяет указать форматирование для указанного поля данных.

Интерактивный пример этой функции представлен на следующей странице: Запустить.

Расширение модели данных для настройки поля данных.

Атрибут MetadataTypeAttribute позволяет связать класс с разделяемым классом модели данных. В этом связанном классе предоставляются пользовательские метаданные.

Дополнительные сведения см. в разделе Практическое руководство. Настройка проверки полей данных в модели данных.

Настройка ограничений числового диапазона для значения в поле данных.

Атрибут RangeAttribute позволяет задавать границы диапазона для значения поля данных. Шаблоны полей платформы динамических данных по умолчанию используют элемент управления RangeValidator для проверки на основе диапазонов.

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

Атрибут RegularExpressionAttribute позволяет указать регулярное выражение для значения поля данных. Шаблоны полей платформы динамических данных по умолчанию используют элемент управления RegularExpressionValidator для проверки на основе регулярных выражений.

Указание обязательности ввода значения поля данных.

Атрибут RequiredAttribute используется для переопределения правила схемы базы данных, позволяющего использовать пустые поля данных. Шаблоны полей платформы динамических данных по умолчанию используют элемент управления RequiredFieldValidator для обязательных полей.

Включение или отключение отображения поля данных при включенной функции формирования шаблонов.

Атрибут ScaffoldColumnAttribute позволяет включить или отключить отображение отдельного поля при включенной функции формирования шаблонов. Дополнительные сведения см. в разделе Формирование шаблонов динамических данных ASP.NET.

Включение или отключение отображения таблицы при включенной функции формирования шаблонов.

Атрибут ScaffoldTableAttribute позволяет включить или отключить отображение отдельной таблицы при включенной функции формирования шаблонов. Дополнительные сведения см. в разделе Формирование шаблонов динамических данных ASP.NET.

Указание максимального количества символов в поле данных.

Атрибут StringLengthAttribute позволяет указать максимальное количество символов в поле данных.

Указание шаблона поля, используемого для отображения поля данных.

Атрибут UIHintAttribute позволяет указать шаблон поля для отображения поля данных. Этот атрибут можно использовать для связывания пользовательского шаблона полей с полем данных.

Атрибуты System.ComponentModel также можно использовать для настройки полей данных. В следующей таблице представлены некоторые подобные атрибуты и способы их использования.

Сценарий

Атрибут и описание

Указание значения по умолчанию для поля данных.

Атрибут DefaultValueAttribute позволяет вставить начальное значение при изменении поля данных.

Указание сообщения подсказки.

Атрибут DescriptionAttribute позволяет вывести сообщение в виде всплывающей подсказки. Сообщение отображается при наведении указателя мыши на поле, находящееся в режиме правки.

Указание отображаемого имени заголовка.

Атрибут DisplayNameAttribute позволяет изменить отображаемое имя столбца или таблицы.

Дополнительные сведения о платформе динамических данных см. в следующих разделах.

К началу

Показ: