В этой главе мы узнаем, как создать модель данных сущности в конструкторе, используя рабочий процесс, называемый Model First.
-
Model First отлично подходит, когда вы начинаете новый проект, где база данных еще даже не существует.
-
Модель хранится в файле EDMX и может быть просмотрена и отредактирована в Entity Framework Designer.
-
В Model First вы определяете свою модель в конструкторе Entity Framework, затем генерируете SQL, который создает схему базы данных в соответствии с вашей моделью, а затем вы выполняете SQL для создания схемы в вашей базе данных.
-
Классы, с которыми вы взаимодействуете в вашем приложении, автоматически генерируются из файла EDMX.
Model First отлично подходит, когда вы начинаете новый проект, где база данных еще даже не существует.
Модель хранится в файле EDMX и может быть просмотрена и отредактирована в Entity Framework Designer.
В Model First вы определяете свою модель в конструкторе Entity Framework, затем генерируете SQL, который создает схему базы данных в соответствии с вашей моделью, а затем вы выполняете SQL для создания схемы в вашей базе данных.
Классы, с которыми вы взаимодействуете в вашем приложении, автоматически генерируются из файла EDMX.
Ниже приведен простой пример создания нового консольного проекта с использованием подхода Model First.
Шаг 1 — Откройте Visual Studio и выберите Файл → Создать → Проект
Шаг 2. Выберите Установлено → Шаблоны → Visual C # → Windows на левой панели, а затем на средней панели выберите Консольное приложение.
Шаг 3 — Введите EFModelFirstDemo в поле Имя.
Шаг 4 — Чтобы создать модель, сначала щелкните правой кнопкой мыши ваш консольный проект в обозревателе решений и выберите Добавить → Новые элементы…
Следующий диалог откроется.
Шаг 5 — Выберите ADO.NET Entity Data Model из средней панели и введите имя ModelFirstDemoDB в поле Имя.
Шаг 6 — Нажмите кнопку «Добавить», которая запустит диалоговое окно «Мастер модели данных объекта».
Шаг 7 — Выберите пустую модель EF Designer и нажмите кнопку «Далее». Entity Framework Designer открывается с пустой моделью. Теперь мы можем начать добавлять объекты, свойства и ассоциации в модель.
Шаг 8 — Щелкните правой кнопкой мыши на поверхности дизайна и выберите Свойства. В окне «Свойства» измените имя контейнера сущностей на ModelFirstDemoDBContext.
Шаг 9 — Щелкните правой кнопкой мыши на поверхности дизайна и выберите Добавить новый → Объект …
Откроется диалоговое окно Add Entity, как показано на следующем рисунке.
Шаг 10. Введите Student в качестве имени сущности и Student Id в качестве имени свойства и нажмите Ok.
Шаг 11 — Щелкните правой кнопкой мыши новый объект в области дизайна и выберите «Добавить новый» → «Скалярное свойство», введите «Имя» в качестве имени свойства.
Шаг 12. Введите FirstName, а затем добавьте еще два скалярных свойства, таких как LastName и EnrollmentDate.
Шаг 13 — Добавьте еще два Entity Course и Enrollment, выполнив все шаги, упомянутые выше, а также добавьте некоторые скалярные свойства, как показано в следующих шагах.
Шаг 14 — У нас есть три объекта в Visual Designer, давайте добавим некоторую связь или связь между ними.
Шаг 15 — Щелкните правой кнопкой мыши на поверхности дизайна и выберите Добавить новый → Ассоциация …
Шаг 16. Сделайте один конец отношения точкой для ученика с кратностью одного, а другой конец точки для зачисления с множественностью множества.
Шаг 17 — Это означает, что у ученика много зачислений, и зачисление принадлежит одному ученику.
Шаг 18 — Убедитесь, что флажок Добавить свойства внешнего ключа в объект «Отправить» установлен и нажмите кнопку ОК.
Шаг 19. Аналогичным образом добавьте еще одну связь между курсом и зачислением.
Шаг 20. Ваша модель данных будет выглядеть следующим образом после добавления связей между сущностями.
Теперь у нас есть простая модель, из которой мы можем сгенерировать базу данных и использовать ее для чтения и записи данных. Давайте продолжим и создадим базу данных.
Шаг 1 — Щелкните правой кнопкой мыши на области конструктора и выберите «Создать базу данных из модели».
Шаг 2 — Вы можете выбрать существующую базу данных или создать новое соединение, нажав на Новое соединение …
Шаг 3 — Чтобы создать новую базу данных, нажмите New Connection…
Шаг 4 — Введите имя сервера и имя базы данных.
Шаг 5 — Нажмите Далее.
Шаг 6 — Нажмите Готово. Это добавит файл * .edmx.sql в проект. Вы можете выполнить сценарии DDL в Visual Studio, открыв файл .sql, затем щелкните правой кнопкой мыши и выберите «Выполнить».
Шаг 7 — Появится следующий диалог для подключения к базе данных.
Шаг 8 — При успешном выполнении вы увидите следующее сообщение.
Шаг 9 — Зайдите в обозреватель сервера, вы увидите, что база данных создана с тремя указанными таблицами.
Далее нам нужно поменять местами нашу модель, чтобы сгенерировать код, использующий API-интерфейс DbContext.
Шаг 1 — Щелкните правой кнопкой мыши пустое место вашей модели в EF Designer и выберите «Добавить элемент генерации кода»…
Вы увидите, что откроется следующее диалоговое окно Add New Item.
Шаг 2 — Выберите EF 6.x DbContext Generator в средней панели и введите ModelFirstDemoModel в поле Имя.
Шаг 3. В обозревателе решений вы увидите, что создаются шаблоны ModelFirstDemoModel.Context.tt и ModelFirstDemoModel.tt.
ModelFirstDemoModel.Context генерирует DbCcontext и наборы объектов, которые вы можете возвращать и использовать для запросов, скажем, для контекста, студентов и курсов и т. Д.
Другой шаблон имеет дело со всеми типами Student, Courses и т. Д. Ниже приведен класс Student, который генерируется автоматически из Entity Model.
Ниже приведен код C #, в котором некоторые данные вводятся и извлекаются из базы данных.
using System; using System.Linq; namespace EFModelFirstDemo { class Program { static void Main(string[] args) { using (var db = new ModelFirstDemoDBContext()) { // Create and save a new Student Console.Write("Enter a name for a new Student: "); var firstName = Console.ReadLine(); var student = new Student { StudentID = 1, FirstName = firstName }; db.Students.Add(student); db.SaveChanges(); var query = from b in db.Students orderby b.FirstName select b; Console.WriteLine("All student in the database:"); foreach (var item in query) { Console.WriteLine(item.FirstName); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } } }
Когда приведенный выше код будет выполнен, вы получите следующий вывод:
Enter a name for a new Student: Ali Khan All student in the database: Ali Khan Press any key to exit...
Мы рекомендуем выполнить вышеприведенный пример пошагово для лучшего понимания.