Учебники

Entity Framework — модель первого подхода

В этой главе мы узнаем, как создать модель данных сущности в конструкторе, используя рабочий процесс, называемый 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 — Нажмите Далее.

Сервер и база данных 1

Шаг 6 — Нажмите Готово. Это добавит файл * .edmx.sql в проект. Вы можете выполнить сценарии DDL в Visual Studio, открыв файл .sql, затем щелкните правой кнопкой мыши и выберите «Выполнить».

Сценарии DDL

Шаг 7 — Появится следующий диалог для подключения к базе данных.

Подключиться к базе данных

Шаг 8 — При успешном выполнении вы увидите следующее сообщение.

Успешное выполнение

Шаг 9 — Зайдите в обозреватель сервера, вы увидите, что база данных создана с тремя указанными таблицами.

База данных создана

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

Шаг 1 — Щелкните правой кнопкой мыши пустое место вашей модели в EF Designer и выберите «Добавить элемент генерации кода»…

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.

CSharp Code

Ниже приведен код 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...

Мы рекомендуем выполнить вышеприведенный пример пошагово для лучшего понимания.