Entity Framework позволяет запрашивать, вставлять, обновлять и удалять данные, используя объекты Common Language Runtime (CLR), которые называются сущностями. Entity Framework отображает сущности и отношения, которые определены в вашей модели, в базу данных. Он также предоставляет возможности для —
- Материализация данных, возвращаемых из базы данных как объектов сущностей
- Отслеживать изменения, которые были внесены в объекты
- Обрабатывать параллелизм
- Распространение изменений объекта обратно в базу данных
- Привязать объекты к элементам управления
Основной класс, который отвечает за взаимодействие с данными как объектами, — System.Data.Entity.DbContext. API-интерфейс DbContext не выпускается как часть .NET Framework. Чтобы быть более гибкими и частыми с выпуском новых функций для Code First и DbContext API, команда Entity Framework распространяет EntityFramework.dll через функцию Microsoft NuGet.
-
NuGet позволяет добавлять ссылки на ваши проекты .NET, вытягивая соответствующие библиотеки DLL прямо в ваш проект из Интернета.
-
Расширение Visual Studio, которое называется Диспетчер пакетов библиотеки, предоставляет простой способ извлечения соответствующей сборки из Интернета в ваши проекты.
NuGet позволяет добавлять ссылки на ваши проекты .NET, вытягивая соответствующие библиотеки DLL прямо в ваш проект из Интернета.
Расширение Visual Studio, которое называется Диспетчер пакетов библиотеки, предоставляет простой способ извлечения соответствующей сборки из Интернета в ваши проекты.
-
DbContext API в основном предназначен для упрощения вашего взаимодействия с Entity Framework.
-
Это также уменьшает количество методов и свойств, необходимых для доступа к часто используемым задачам.
-
В предыдущих версиях Entity Framework эти задачи часто было сложно обнаружить и кодировать.
-
Класс контекста управляет объектами сущностей во время выполнения, которые включают заполнение объектов данными из базы данных, отслеживание изменений и сохранение данных в базе данных.
DbContext API в основном предназначен для упрощения вашего взаимодействия с Entity Framework.
Это также уменьшает количество методов и свойств, необходимых для доступа к часто используемым задачам.
В предыдущих версиях Entity Framework эти задачи часто было сложно обнаружить и кодировать.
Класс контекста управляет объектами сущностей во время выполнения, которые включают заполнение объектов данными из базы данных, отслеживание изменений и сохранение данных в базе данных.
Определение производного класса DbContext
Рекомендуемый способ работы с контекстом — определить класс, производный от DbContext и предоставляющий свойства DbSet, которые представляют коллекции указанных объектов в контексте. Если вы работаете с EF Designer, контекст будет создан для вас. Если вы работаете с Code First, вы обычно пишете контекст самостоятельно.
Следующий код является простым примером, который показывает, что UniContext является производным от DbContext.
-
Вы можете использовать автоматические свойства с DbSet, такие как getter и setter.
-
Он также делает код намного чище, но вы не обязаны использовать его для создания DbSet, когда у вас нет другой логики для применения.
Вы можете использовать автоматические свойства с DbSet, такие как getter и setter.
Он также делает код намного чище, но вы не обязаны использовать его для создания DbSet, когда у вас нет другой логики для применения.
public class UniContext : DbContext { public UniContext() : base("UniContext") { } public DbSet<Student> Students { get; set; } public DbSet<Enrollment> Enrollments { get; set; } public DbSet<Course> Courses { get; set; } }
-
Ранее EDM использовался для генерации классов контекста, которые были получены из класса ObjectContext.
-
Работа с ObjectContext была немного сложной.
-
DbContext — это оболочка для ObjectContext, которая на самом деле похожа на ObjectContext и полезна и проста во всех моделях разработки, таких как Code First, Model First и Database First.
Ранее EDM использовался для генерации классов контекста, которые были получены из класса ObjectContext.
Работа с ObjectContext была немного сложной.
DbContext — это оболочка для ObjectContext, которая на самом деле похожа на ObjectContext и полезна и проста во всех моделях разработки, таких как Code First, Model First и Database First.
Запросы
Есть три типа запросов, которые вы можете использовать, такие как —
- Добавление нового объекта.
- Изменение или обновление значений свойств существующего объекта.
- Удаление существующего объекта.
Добавление новых сущностей
Добавить новый объект с Entity Framework так же просто, как создать новый экземпляр вашего объекта и зарегистрировать его с помощью метода Add в DbSet. Следующий код предназначен для того, когда вы хотите добавить нового студента в базу данных.
private static void AddStudent() { using (var context = new UniContext()) { var student = new Student { LastName = "Khan", FirstMidName = "Ali", EnrollmentDate = DateTime.Parse("2005-09-01") }; context.Students.Add(student); context.SaveChanges(); } }
Изменение существующих объектов
Изменить существующие объекты так же просто, как обновить значение, присвоенное свойству (ам), которое вы хотите изменить, и вызвать SaveChanges. В следующем коде фамилия Али была изменена с Хана на Аслам.
private static void AddStudent() { private static void ChangeStudent() { using (var context = new UniContext()) { var student = (from d in context.Students where d.FirstMidName == "Ali" select d).Single(); student.LastName = "Aslam"; context.SaveChanges(); } } }
Удаление существующих объектов
Чтобы удалить объект, используя Entity Framework, вы используете метод Remove в DbSet. Удалить работы как для существующих, так и для вновь добавленных объектов. Вызов Remove для объекта, который был добавлен, но еще не сохранен в базе данных, отменяет добавление объекта. Сущность удаляется из трекера изменений и больше не отслеживается DbContext. Вызов Remove для существующей сущности, которая отслеживается изменениями, зарегистрирует сущность для удаления при следующем вызове SaveChanges. В следующем примере показан случай, когда студент удаляется из базы данных, имя которой — Али.