Entity framework что это за программа

Содержание

Entity Framework учебник
Начало работы с Entity Framework

Entity Framework (EF) — объектно-реляционный картограф (ORM), который позволяет разработчикам .NET работать с реляционными данными с использованием объектов, специфичных для домена. Это устраняет необходимость в большей части кода доступа к данным, который разработчикам обычно приходится писать.

Entity Framework позволяет создавать модель путем написания кода или использования полей и строк в EF Designer. Оба этих подхода могут использоваться для таргетинга на существующую базу данных или создания новой базы данных.

Entity Framework является основным ORM, который Microsoft предоставляет для .NET Framework и рекомендованной Microsoft технологии доступа к данным.

Версии

Версия Дата выхода
1,0 2008-08-11
4,0 2010-04-12
4,1 2011-04-12
4.1 Обновление 1 2011-07-25
4.3.1 2012-02-29
5.0 2012-08-11
6,0 2013-10-17
6,1 2014-03-17
Core 1.0 2016-06-27

Использование Entity Framework из C # (сначала код)

Сначала код позволяет создавать ваши сущности (классы) без использования GUI-дизайнера или файла .edmx. Сначала он называется Code , потому что вы можете сначала создать свои модели, а структура Entity будет автоматически создавать базу данных в соответствии с сопоставлениями. Или вы также можете использовать этот подход с существующей базой данных, которая сначала называется кодом с существующей базой данных. Например, если вы хотите, чтобы таблица содержала список планет:

Всё об Entity Framework Core


public class Planet < public string Name < get; set; >public decimal AverageDistanceFromSun < get; set; >>

Теперь создайте свой контекст, который является мостом между вашими сущностями и базой данных. Дайте ему один или несколько DbSet<> :

using System.Data.Entity; public class PlanetContext : DbContext < public DbSetPlanets < get; set; >>

Мы можем использовать это, выполнив следующие действия:

using(var context = new PlanetContext()) < var jupiter = new Planet < Name = «Jupiter», AverageDistanceFromSun = 778.5 >; context.Planets.Add(jupiter); context.SaveChanges(); >

В этом примере мы создаем новую Planet с свойством Name со значением «Jupiter» и свойство AverageDistanceFromSun со значением 778.5

Затем мы можем добавить эту Planet в контекст с помощью DbSet Add() DbSet и зафиксировать наши изменения в базе данных с помощью метода SaveChanges() .

Или мы можем извлекать строки из базы данных:

using(var context = new PlanetContext()) < var jupiter = context.Planets.Single(p =>p.Name == «Jupiter»); Console.WriteLine($»Jupiter is million km from the sun.»); >

Установка пакета Entity Framework NuGet

В своей Visual Studio откройте окно Solution Explorer, затем щелкните правой кнопкой мыши на своем проекте и выберите « Управление пакетами NuGet» в меню:

ЧТО ТАКОЕ ENTITY FRAMEWORK?

Управление пакетами nuget

В открывшемся окне введите EntityFramework в поле поиска в правом верхнем углу.

введите описание изображения здесь

Если вы используете Visual Studio 2015, вы увидите что-то вроде этого:

введите описание изображения здесь

Затем нажмите «Установить».

Мы также можем установить инфраструктуру сущности с помощью консоли диспетчера пакетов. Для этого вам сначала нужно открыть его с помощью меню «Сервис» -> «Диспетчер пакетов NuGet» -> «Диспетчер пакетов», затем введите следующее:

Install-Package EntityFramework

введите описание изображения здесь

Это установит Entity Framework и автоматически добавит ссылку на сборку в вашем проекте.

Что такое Entity Framework?

Написание и управление кодом ADO.Net для доступа к данным — утомительная и монотонная работа. Microsoft предоставила инфраструктуру O / RM под названием «Entity Framework» для автоматизации действий, связанных с базой данных для вашего приложения.

Структура Entity — это структура Object / Relational Mapping (O / RM). Это усовершенствование ADO.NET, которое дает разработчикам автоматизированный механизм для доступа и хранения данных в базе данных.

Что такое O / RM?

ORM — это инструмент для хранения данных из объектов домена в реляционную базу данных, такую ​​как MS SQL Server, автоматическим способом без большого программирования. O / RM включает в себя три основные части:

  1. Объекты класса домена
  2. Объекты реляционной базы данных
  3. Отображение информации о том, как объекты домена сопоставляются с объектами реляционной базы данных ( ex tables, views и хранимые процедуры)

ORM позволяет нам сохранить наш дизайн базы данных отдельно от нашего класса класса. Это делает приложение удобным и расширяемым. Он также автоматизирует стандартную операцию CRUD (создание, чтение, обновление и удаление), так что разработчику не нужно писать его вручную.

Источник: learntutorials.net

Обзор Entity Framework

Entity Framework — это набор технологий в ADO.NET, которые поддерживают разработку программных приложений, ориентированных на данные. Архитекторам и разработчикам приложений, ориентированных на обработку данных, приходится учитывать необходимость достижения двух совершенно различных целей. Они должны моделировать сущности, связи и логику решаемых бизнес-задач, а также работать с ядрами СУБД, используемыми для сохранения и получения данных. Данные могут распределяться по нескольким системам хранения данных, в каждой из которых применяются свои протоколы, но даже в приложениях, работающих с одной системой хранения данных, необходимо поддерживать баланс между требованиями системы хранения данных и требованиями написания эффективного и удобного для обслуживания кода приложения.

Платформа Entity Framework позволяет работать с данными в форме специфических для домена объектов и свойств (например, с клиентами и их адресами) без необходимости учитывать формат базовых таблиц и столбцов базы данных, где хранятся эти данные. Entity Framework дает разработчикам возможность работать с данными на более высоком уровне абстракции, создавать и сопровождать приложения, ориентированные на работу с данными, одновременно с этим сокращая объем кода по сравнению с традиционными приложениями. поскольку Entity Framework является компонентом платформа .NET Framework, Entity Framework приложения могут работать на любом компьютере, на котором установлена платформа .NET Framework с пакетом обновления 1 (SP1) версии 3,5.

Предоставление жизненного цикла моделям

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

Читайте также:
Программа отображения html страничек что это

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

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

При работе в режиме Code First концептуальная модель сопоставлена с режимом хранения в коде. Entity Framework может вычислять концептуальную модель на основе типов объектов и дополнительных конфигураций, которые вы определяете. Метаданные сопоставления формируются во время выполнения на основе сочетания определений типов домена и дополнительной информации о конфигурации, которая указана в коде. Entity Framework создает базу данных по мере необходимости на основе метаданных. Дополнительные сведения см. в разделе Создание модели.

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

  • Язык CSDL определяет концептуальную модель. Язык CSDL — это реализация EDMEntity Framework. Расширение файла — CSDL.
  • Язык SSDL определяет модель хранения данных, которая также называется логической моделью. Расширение файла — SSDL.
  • Язык MSL определяет сопоставление модели хранения и концептуальной модели. Расширение файла — MSL.

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

Entity Framework использует эти файлы модели и сопоставления для создания, чтения, обновления и удаления операций с сущностями и связями в концептуальной модели в эквивалентных операциях в источнике данных. Entity Framework даже поддерживает сопоставление сущностей в концептуальной модели с хранимыми процедурами в источнике данных. Дополнительные сведения см. в статье спецификации на языке CSDL, SSDL и MSL.

Сопоставьте объекты с данными

При использовании объектно-ориентированного программирования для взаимодействия с системами хранения данных возникают сложности. Безусловно, организация классов часто напоминает организацию таблиц реляционной базы данных, но такое соответствие неидеально. Несколько нормализованных таблиц часто соответствуют единственному классу, а связи между классами представлены не так, как связи между таблицами. Например, для представления клиенту заказа на продажу в классе Order может использоваться свойство, содержащее ссылку на экземпляр класса Customer , но строка таблицы Order базы данных содержит столбец внешнего ключа (или набор столбцов) со значением, которое соответствует первичному ключу в таблице Customer . Класс Customer может включать свойство с именем Orders , содержащее коллекцию экземпляров класса Order , но таблица Customer базы данных не содержит сравнимого столбца. Entity Framework предоставляет разработчикам гибкие возможности для представления связей таким образом или для более тесной связи между моделями, как они представлены в базе данных.

В существующих решениях была предпринята попытка устранить этот разрыв, часто называемый «несоответствием типов данных» (impedance mismatch), путем сопоставления с реляционными таблицами и столбцами только объектно-ориентированных классов и свойств. Вместо использования этого традиционного подхода Entity Framework сопоставляет реляционные таблицы, столбцы и ограничения внешнего ключа в логических моделях с сущностями и связями в концептуальных моделях.

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

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

Доступ и изменение данных сущности

Платформа Entity Framework — это не просто еще одно средство объектно-реляционного сопоставления. Ее цель — предоставить приложениям возможность чтения и изменения данных, представленных в виде сущностей и связей в концептуальной модели. Entity Framework использует сведения в файлах модели и сопоставления для преобразования запросов объектов в типы сущностей, представленные в концептуальной модели, в запросы, относящиеся к источникам данных. Результаты запроса собиваются на объекты, которыми управляет Entity Framework. Entity Framework предоставляет следующие способы запроса концептуальной модели и возврата объектов.

  • LINQ to Entities. Обеспечивает поддержку запросов LINQ для выполнения запросов к типам сущности, которые определены в концептуальной модели. дополнительные сведения см. в разделе LINQ to Entities.
  • Entity SQL. независимый от хранилища диалект SQL, который работает непосредственно с сущностями в концептуальной модели и поддерживает EDM концепции. Entity SQL используется как с запросами объектов, так и с запросами, которые выполняются с помощью поставщика EntityClient. дополнительные сведения см. в разделе Entity SQL обзор.

Entity Framework включает поставщик данных EntityClient. Этот поставщик управляет соединениями, преобразует запросы сущностей в запросы, зависящие от источника данных, и возвращает модуль чтения данных, который Entity Framework использует для материализации данных сущности в объекты. если материализация объекта не требуется, поставщик EntityClient можно также использовать как стандартный ADO.NET поставщик данных, позволяя приложениям выполнять запросы Entity SQL и использовать возвращенный модуль чтения данных только для чтения. Дополнительные сведения см. в разделе Поставщик EntityClient для Entity Framework.

На следующей схеме показана архитектура, применяемая в платформе Entity Framework для доступа к данным.

Средства EDM могут создать класс, производный от System.Data.Objects.ObjectContext или System.Data.Entity.DbContext , представляющий контейнер сущностей в концептуальной модели. Контекст объекта предоставляет средства для отслеживания изменений и управления идентификаторами, параллелизмом и связями. Этот класс представляет также доступ к методу SaveChanges , который записывает результаты вставки, обновления и удаления данных в источник данных. Подобно запросам, эти изменения производятся либо командами, автоматически сформированными системой, либо хранимыми процедурами, указанными разработчиком.

Поставщики данных

EntityClient поставщик расширяет модель поставщика ADO.NET путем доступа к данным с точки зрения концептуальных сущностей и связей. Он выполняет запросы, использующие Entity SQL. Entity SQL предоставляет базовый язык запросов, который позволяет EntityClient взаимодействовать с базой данных. Дополнительные сведения см. в разделе Поставщик EntityClient для Entity Framework.

Читайте также:
Что за программа которая может отформатировать флешку

Entity Framework включает обновленный поставщик данных SqlClient, который поддерживает канонические деревья команд. Дополнительные сведения см. в разделе SqlClient для Entity Framework.

Средства модели EDM

вместе со средой выполнения Entity Framework Visual Studio включает средства сопоставления и моделирования. Дополнительные сведения см. в разделе моделирование и сопоставление.

Дополнительные сведения

Дополнительные сведения о Entity Framework см. в следующих статьях:

Начало работы — содержит сведения о том, как быстро начать работу с помощью краткого руководства, в котором показано, как создать простое приложение Entity Framework.

Entity Framework терминология определяет множество терминов, которые появились EDM и Entity Framework и используются в документации Entity Framework.

Entity Framework ресурсы — ссылки на основные разделы и ссылки на внешние разделы и ресурсы для создания Entity Framework приложений.

См. также

Источник: learn.microsoft.com

Основы Entity Framework Core. Часть [0]

В этой части будет кратко рассказано о технологии Entity Framework Core, а также её установки в свой проект.

Кратко о технологии

Общая цель EF — предоставить возможность взаимодействия с данными из реляционных баз данных с использованием объектной модели, которая отображается напрямую на бизнес-объекты в создаваемых приложениях. Например, вместо того, чтобы трактовать пакет данных как коллекцию строк и столбцов, вы можете оперировать с коллекцией строго типизированных объектов, называемых сущностями. Такие сущности хранятся в специализированных классах коллекций, поддерживающих LINQ, что позволяет выполнять операции доступа к данным в коде С#.

Entity Framework Core (также известная как EF Core) пред­ставляет собой пакет объектно-реляционного отображения (object-relational mapping — ОRМ) производства Microsoft, который позволяет приложениям .NET Core хранить данные в реляционных базах данных. Entity Framework Core решает одну основную задачу: сохранение объектов .NET в базе данных (БД) и извлечение их в более позднее время.

Более подробно можете почитать на здесь и здесь.

Создание проекта

Для начала создадим консольное приложение в Visual Studio 2022. Как вариант, это можно сделать сразу через консоль:

dotnet new sln -n EntityFrameworkBase #создаем проект dotnet new console -lang c# -n ChapterZero -o .ChapterZero -f net6.0 #создаем решение dotnet sln .EntityFrameworkBase.sln add .ChapterZero #прикрепляем к проекту решение

Или запускайте Visual Studio и выполняйте пошагово действия, которые показаны ниже:

  1. Создаем новый проект.

Создать новый проект.

  1. Создаем консольное приложение.

Выбрать консольное приложение.

  1. Придумываем название проекта, выбираем путь, по которому будет располагаться проект, и, наконец, придумываем название решения.

Создать решение.

После выполненных действий в обозревателе решений (Solution Explorer) должно быть отображено следующее:

Созданный проект

Установка EF Core в свой проект

Установить все нужные библиотеки можно как и выше через консоль:

dotnet add ChapterZero package Microsoft.EntityFrameworkCore.Design dotnet add ChapterZero package Microsoft.EntityFrameworkCore.SqlServer dotnet add ChapterZero package Microsoft.EntityFrameworkCore

Или в Visual Studio через NuGet Package Manager. Процесс показан ниже:

  1. Переходим в Tools / NuGet Package Manager / Manage NuGet Packages for Solution.

Переходим в Manage NuGet Packages

  1. Переходим в Browse и ищем Microsoft.EntityFrameworkCore.

  1. Устанавливаем в проект.

Для Microsoft.EntityFrameworkCore.SqlServer и Microsoft.EntityFrameworkCore.Design повторить тоже самое. После установки всех нужных компонентов при переходе во вкладку Installed должно отобразиться следующее:

На этом пока что закончим. Код проекта тут.

Спасибо вам за прочтение.

Источник: habr.com

Как использовать Entity framework

Фреймворки — это алгоритмы, упрощающие написание кода. Одним из популярных фреймворков для программирования на C# является Entity. Мы рассмотрим, как использовать Entity framework и какие преимущества этого расширения.

Что такое Entity framework

Entity фреймворк помогает упростить взаимодействие управления базами данных. Это решение подходит для языков программирования семейства .NET, включая C#. При активации фреймворка взаимодействие с информацией выполняется через сущности, а не таблицы. Название алгоритма переводится с английского языка как «сущность».

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

Как подключить Entity framework

Подключить Entity фреймворк можно почти к любому проекту, от ASP.NET до Xamarin. Работать в консольном приложении удобно благодаря простому интерфейсу.

Чтобы установить этот фреймворк, следует создать проект Console Application в программе Visual Studio. Затем нужно открыть менеджер пакетов NuGet и выбрать искомую строку, чтобы скачать и установить расширение.

После установки нужно подключиться к системе управления базами данных (СУБД). Подключение проходит через файл конфигурации. В консольном приложении открыть файл App.config и внести информацию о СУБД.

Из файла App.config алгоритм будет брать connectionString. Это расширение может подключаться к SQLEXPRESS или localdb. Для начала работы можно задавать любое название таблицы. Если указанная таблица не найдена, алгоритм создает файл автоматически.

Как быстро написать код

Для успешного применения фреймворка нужно уметь пользоваться ADO.NET, создавать SQL запросы и управлять подключениями. Возможности применения алгоритма широкие. Для примера рассмотрим методику Code first, когда сначала пишется код для управления базой данных.

Чтобы начать работу, требуется создать сущность. В объектно-ориентированных языках, таких как C#, сущность является классом. Далее требуется добавить класс, которые будет применяться для подключения к СУБД. В программировании этот класс называется контекстом.

Класс PlayerContext подходит для управления любыми сущностями. Чтобы начать работу, следует добавить несколько коллекций DbSet. Название таблицы должно совпадать с названием сущности во множественном числе.

Затем нужно прописать первые объекты и добавить в таблицу. Закончив работу, следует запустить программу и проверить, что объекты сохранились.

Далее нужно проверить информацию в таблице. Для этого можно вывести данные из объектов в указанным свойстве. Фреймворк автоматически указывает свойство как первичный ключ, поэтому нужные значения подставляются в таблицу.

Entity framework может выполнять более сложные операции: выборка, редактирование, изменение информации. Для достижения указанных целей применяются SQL и Linq запросы.

Преимущества программы

Опытные разработчики считают, что у фреймворка много плюсов:

  • Программный код становится легко читаемым.
  • Уменьшается время выполнения рутинных задач.
  • Единый синтаксис для объектных запросов.
  • Прямое использование объектов LINQ / FE.
  • Легкое сопоставление объектов с помощью таблиц.

У фреймворка есть и недостаток. При работе с объемными таблицами он «тормозит», ухудшая производительность программы. В масштабных проектах стоит использовать чистый ADO.NET без расширений.

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

Источник: synergy.ru

Начало работы с Entity Framework Core в ASP.NET Core — модели, DbContext, конфигурация

Сущности (модели) — классы, отображаемые в базе данных

Прежде чем мы начнем говорить о классах модели, нам нужно создать проект ASP.NET Core, в котором будут размещаться классы модели. Итак, мы собираемся создать проект веб-API ASP.NET Core с помощью ASP.NET Core. версия 3.1:

Добавление нового проекта ASP.NET Core Web application

Нам необходимо установить библиотеки Microsoft.EntityFrameworkCoreи Microsoft.EntityFrameworkCore.SqlServer . Это можно сделать с помощью диспетчера NuGet или окна консоли диспетчера пакетов.

Читайте также:
Krhelper4pc что это за программа

Класс модели (сущности) — это класс, который Entity Framework Core использует для сопоставления с таблицей базы данных. Итак, давайте создадим нашу первую сущность, а затем объясним, как EF Core создает таблицу из созданного класса.

Давайте создадим папку Entities и внутри класса с именем Student :

public class Student < public Guid StudentId < get; set; >public string Name < get; set; >public int Age < get; set; >>

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

Затем все общедоступные свойства этого класса будут сопоставлены с одноименными столбцами таблицы. Наконец, EF Core использует соглашение об именах для создания первичного ключа из свойства StudentId в таблице базы данных (позже, в разделе «Настройка нереляционных свойств», мы увидим, как это сделать).

Предоставление ConnectionString для EF Core в ASP.NET Core

Создание класса модели или классов модели — лишь одна часть головоломки. Чтобы в EF Core была необходимая информация о базе данных для работы, нам необходимо предоставить строку подключения, изменив файл appsettings.json .

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

  • Development.json — содержит настройки, относящиеся к среде разработки.
  • Production.json — содержит настройки, относящиеся к производственной среде.
  • appsettings.json — содержит настройки, общие для обеих сред.

Но вы должны знать, что использование файлов appsettings для хранения строки подключения (или других конфиденциальных данных) — не лучшая практика, особенно для производственной среды. В таком случае лучше использовать переменные среды.

< «Logging»: < «LogLevel»: < «Default»: «Information», «Microsoft»: «Warning», «Microsoft.Hosting.Lifetime»: «Information» >>, «ConnectionStrings»: < «sqlConnection»: «server=.; database=CodeMaze; Integrated Security=true» >, «AllowedHosts»: «*» >

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

Вот и все, мы можем перейти к классу контекста.

Класс DbContext и его регистрация в ASP.NET Core

Класс контекста — еще одна важная часть приложения. Этот класс должен наследовать от базового класса DbContext , который содержит информацию и конфигурацию для доступа к базе данных. Итак, давайте создадим наш контекстный класс с именем ApplicationContext в папке Entities :

public class ApplicationContext : DbContext < public ApplicationContext(DbContextOptions options) :base(options) < >public DbSet Students < get; set; >>

Дополнительные параметры отправляются в базовый класс DbContext через конструктор ApplicationContext с помощью параметра DbContextOptions . Наконец, мы видим свойство Student типа DbSet , и это довольно важная часть.

EF Core ищет все общедоступные свойства DbSet внутри класса контекста приложения, а затем сопоставляет их имена с именами таблиц в базе данных. Затем он входит в класс, который предоставляется в свойстве `DbSet ` (в нашем случае это класс Student ), и сопоставляет все общедоступные свойства в столбцы таблицы с одинаковыми именами и типами (StudentId, Name и Age).

Если наш класс Student имеет какие-либо ссылки на другие классы (прямо сейчас их нет, но мы создадим отношения в следующих статьях), EF Core будет использовать эти ссылочные свойства и создавать отношения в база данных.

Регистрация класса контекста в IOC ASP.NET Core

После того, как мы закончили создание класса ApplicationContext , мы можем перейти к его регистрации.

Для этого мы собираемся открыть класс Startup.cs и изменить метод ConfigureServices :

public void ConfigureServices(IServiceCollection services) < services.AddDbContext(opts => opts.UseSqlServer(Configuration.GetConnectionString(«sqlConnection»))); services.AddControllers(); >

Мы используем метод расширения AddDbContext для регистрации нашего класса ApplicationContext в контейнере IOC. Внутри метода UseSqlSrver мы предоставляем строку подключения к нашему классу контекста, а также можем предоставить дополнительные параметры (если в этом появится необходимость).

О AddDbContextPool

Вместо метода AddDbContext мы можем использовать метод AddDbContextPool. Мы можем использовать либо первый, либо второй метод, но во втором методе мы включаем пул DbContext. Это не будет создавать каждый раз новый экземпляр, но сначала проверит, есть ли доступные экземпляры в пуле, и если они есть, он будет использовать один из них.

Сейчас наш класс контекста готов к использованию с инъекцией зависимостей (DI) внутри нашего приложения. Итак, давайте добавим контроллер Values ​​(API) и изменим его:

public class ValuesController : ControllerBase < private readonly ApplicationContext _context; public ValuesController(ApplicationContext context) < _context = context; >[HttpGet] public IActionResult Get() < //код, выполняющий обращение к _context >>

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

Углубляемся в класс DbContext

Наш класс ApplicationContext в настоящее время принимает один параметр типа DbContextOptions внутри конструктора. Но мы также можем предоставить общую версию параметра DbContextOptions :

public ApplicationContext(DbContextOptions options) :base(options)

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

Если мы перейдем к определению DbContext, мы увидим, что внутри у него есть три свойства:

  • База данных — это свойство отвечает за транзакции, перенос / создание базы данных и необработанные SQL-запросы (обо всем этом мы поговорим в следующих статьях).
  • ChangeTracker — это свойство используется для отслеживания состояний объектов, полученных с помощью одного и того же экземпляра контекста (это также будет рассмотрено в следующих статьях).
  • Модель — это свойство обеспечивает доступ к модели базы данных, которую EF Core использует при подключении или создании базы данных.

Мы можем использовать свойство Model для доступа к информации о каждой сущности и ее свойствах.

После установки мы можем изменить наше действие Get:

var entity = _context.Model .FindEntityType(typeof(Student).FullName); var tableName = entity.GetTableName(); var schemaName = entity.GetSchema(); var key = entity.FindPrimaryKey(); var properties = entity.GetProperties();

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

Заключение

Отлично. Мы успешно интегрировали Entity Framework Core в наше приложение ASP.NET Core и можем перейти ко всем функциям, которые оно нам предоставляет.

Подводя итог, мы узнали:

  • Что представляет собой класс сущности (модели) в EF Core?
  • Как предоставить строку подключения для нашего приложения
  • Как создать класс контекста и почему это так важно для нас
  • Дополнительная информация о классе DbContext

Источник: forproger.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru