Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью MVC, Entity Framework и ASP.NET формирования шаблонов можно создать веб-приложение, предоставляющее интерфейс для существующей базы данных. В этой серии учебников показано, как автоматически создавать код, который позволяет пользователям отображать, изменять, создавать и удалять данные, хранящееся в таблице базы данных. Созданный код соответствует столбцам в таблице базы данных.
В этом руководстве основное внимание уделяется добавлению заметок к данным в модель данных, чтобы указать требования к проверке и форматирование отображения. Она была улучшена на основе отзывов пользователей в разделе комментариев.
Изучив это руководство, вы:
- Добавление заметок к данным
- Добавление классов метаданных
Предварительные требования
Добавление заметок к данным
Как вы видели в предыдущем разделе, некоторые правила проверки данных автоматически применяются к введенным пользователем данным. Например, можно указать только число для свойства Grade. Чтобы указать дополнительные правила проверки данных, можно добавить заметки к данным в класс модели. Эти заметки применяются в веб-приложении для указанного свойства. Можно также применить атрибуты форматирования, которые изменяют способ отображения свойств. например, изменение значения, используемого для текстовых меток.
В этом руководстве вы добавите заметки к данным, чтобы ограничить длину значений, указанных для свойств FirstName, LastName и MiddleName. В базе данных эти значения ограничены 50 символами; однако в веб-приложении это ограничение символов в настоящее время не применяется. Если пользователь содержит более 50 символов для одного из этих значений, страница аварийно завершит работу при попытке сохранить значение в базе данных. Вы также ограничите оценок значениями от 0 до 4.
Выберите Модели>ContosoModel.edmx>ContosoModel.tt и откройте файл Student.cs . Добавьте следующий выделенный код в класс .
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Student
{
public Student()
{
this.Enrollments = new HashSet<Enrollment>();
}
public int StudentID { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
public Nullable<System.DateTime> EnrollmentDate { get; set; }
[StringLength(50)]
public string MiddleName { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
Откройте файл Enrollment.cs и добавьте следующий выделенный код.
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Enrollment
{
public int EnrollmentID { get; set; }
[Range(0, 4)]
public Nullable<decimal> Grade { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
}
Создайте решение.
Щелкните Список учащихся и выберите Изменить. При попытке ввести более 50 символов отображается сообщение об ошибке.
Назад на домашнюю страницу. Щелкните Список регистраций и выберите Изменить. Попробуйте предоставить оценку выше 4. Вы получите следующую ошибку: Поле Оценка должна быть в диапазоне от 0 до 4.
Добавление классов метаданных
Добавление атрибутов проверки непосредственно в класс модели работает, если вы не ожидаете изменения базы данных; Однако если база данных изменится и вам потребуется повторно создать класс модели, вы потеряете все атрибуты, примененные к классу модели. Этот подход может быть очень неэффективным и может потерять важные правила проверки.
Чтобы избежать этой проблемы, можно добавить класс метаданных, содержащий атрибуты . При связывании класса модели с классом метаданных эти атрибуты применяются к модели. При таком подходе класс модели можно повторно создать без потери всех атрибутов, примененных к классу метаданных.
В папке Models добавьте класс с именем Metadata.cs.
Замените код в файле Metadata.cs приведенным ниже кодом.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
public class StudentMetadata
{
[StringLength(50)]
[Display(Name="Last Name")]
public string LastName;
[StringLength(50)]
[Display(Name="First Name")]
public string FirstName;
[StringLength(50)]
[Display(Name="Middle Name")]
public string MiddleName;
[Display(Name = "Enrollment Date")]
public Nullable<System.DateTime> EnrollmentDate;
}
public class EnrollmentMetadata
{
[Range(0, 4)]
public Nullable<decimal> Grade;
}
}
Эти классы метаданных содержат все атрибуты проверки, которые ранее применялись к классам модели. Атрибут Display используется для изменения значения, используемого для текстовых меток.
Теперь необходимо связать классы модели с классами метаданных.
В папке Models добавьте класс с именем PartialClasses.cs.
Замените содержимое файла на код, приведенный ниже.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
}
[MetadataType(typeof(EnrollmentMetadata))]
public partial class Enrollment
{
}
}
Обратите внимание, что каждый класс помечается partial
как класс и соответствует имени и пространству имен как классу, который создается автоматически. Применив атрибут метаданных к разделяемым классу, вы гарантируете, что атрибуты проверки данных будут применены к автоматически созданному классу. Эти атрибуты не будут потеряны при повторном создании классов модели, так как атрибут метаданных применяется в разделяемых классах, которые не создаются повторно.
Чтобы повторно создать автоматически созданные классы, откройте файл ContosoModel.edmx . Еще раз щелкните правой кнопкой мыши область конструктора и выберите Обновить модель из базы данных. Несмотря на то, что вы не изменили базу данных, этот процесс будет повторно создавать классы. На вкладке Обновление выберите Таблицы и Готово.
Сохраните файл ContosoModel.edmx , чтобы применить изменения.
Откройте файл Student.cs или Enrollment.cs и обратите внимание, что атрибуты проверки данных, примененные ранее, больше не находятся в файле. Однако запустите приложение и обратите внимание, что правила проверки по-прежнему применяются при вводе данных.
Заключение
В этой серии приведен простой пример создания кода из существующей базы данных, который позволяет пользователям изменять, обновлять, создавать и удалять данные. Для создания проекта использовалась ASP.NET MVC 5, Entity Framework и ASP.NET формирование шаблонов.
Вводный пример разработки Code First см. в разделе начало работы с ASP.NET MVC 5.
Более сложный пример см. в статье Создание модели данных Entity Framework для ASP.NET приложения MVC 4. Обратите внимание, что API DbContext, используемый для работы с данными в Database First, совпадает с API, используемым для работы с данными в Code First. Даже если вы планируете использовать Database First, вы можете научиться обрабатывать более сложные сценарии, такие как чтение и обновление связанных данных, обработка конфликтов параллелизма и т. д. из учебника Code First. Единственное различие заключается в том, как создаются классы базы данных, контекста и классов сущностей.
Дополнительные ресурсы
Полный список заметок проверки данных, которые можно применить к свойствам и классам, см. в разделе System.ComponentModel.DataAnnotations.
Дальнейшие действия
Изучив это руководство, вы:
- Добавлены заметки к данным
- Добавлены классы метаданных
Сведения о развертывании веб-приложения и базы данных SQL в Служба приложений Azure см. в этом руководстве: