Entity Framework (EF) Core — это простая, кроссплатформенная и расширяемая версия популярной технологии доступа к данным Entity Framework с открытым исходным кодом.
EF Core может использоваться в качестве объектно-реляционного модуля сопоставления (O/RM), который:
Позволяет разработчикам .NET работать с базой данных с помощью объектов .NET.
Устраняет необходимость в большей части кода для доступа к данным, который обычно приходится писать.
EF Core поддерживает множество систем баз данных. Дополнительные сведения см. в разделе Поставщики баз данных.
Модель
В EF Core доступ к данным осуществляется с помощью модели. Модель состоит из классов сущностей и объекта контекста, который представляет сеанс взаимодействия с базой данных. Объект контекста позволяет выполнять запросы и сохранять данные. Дополнительные сведения см. в разделе Создание модели.
EF поддерживает следующие подходы к разработке моделей:
Создание модели на основе существующей базы данных.
Ручной код модели для сопоставления базы данных.
После создания модели используйте Миграции EF для создания базы данных на основе модели. Миграции позволяют развивать базу данных по мере изменения модели.
Экземпляры классов сущностей извлекаются из базы данных с помощью LINQ. Дополнительные сведения см. в разделе Выполнение запросов к данным.
C#
using (var db = new BloggingContext())
{
var blogs = await db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToListAsync();
}
Сохранение данных
Для создания, удаления и изменения данных в базе данных используются экземпляры классов сущностей. Дополнительные сведения см. в разделе Сохранение данных.
C#
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
await db.SaveChangesAsync();
}
Рекомендации по технологиям O/RM для EF
Хотя EF Core хорошо подходит для абстрагирования многих деталей при программировании, существуют некоторые рекомендации, которые применяются ко всем технологиям O/RM и помогают избежать распространенных ошибок в рабочих приложениях.
Знания базового сервера базы данных на промежуточном уровне или выше необходимы для проектирования, отладки, профилирования и переноса данных в рабочих приложениях с высокой производительностью. Например, знание первичных и внешних ключей, ограничений, индексов, нормализации, инструкций DML и DDL, типов данных, профилирования и т. д.
Функциональное и интеграциочное тестирование. Важно реплицировать рабочую среду как можно ближе:
Находите проблемы в приложениях, которые отображаются только при использовании определенных версий или выпуска сервера базы данных.
Перехватывать критические изменения при обновлении EF Core и других зависимостей. Например, при добавлении или обновлении платформ, таких как ASP.NET Core, OData или AutoMapper. Эти зависимости могут повлиять на EF Core неожиданным образом.
Производительность и нагрузочное тестирование с репрезентативными нагрузками. Упрощенное использование некоторых функций затрудняет масштабирование. К таким случаям относятся: использование Includes в нескольких коллекциях, интенсивное применение отложенной загрузки, условные запросы к неиндексированным столбцам, массовые обновления и вставки с использованием созданных хранилищем значений, отсутствие обработки параллелизма, крупные модели и недостаточная политика кэширования.
Проверка безопасности: например, обработка строка подключения и других секретов, разрешений базы данных для операций без развертывания, проверка входных данных для необработанного SQL, шифрование конфиденциальных данных. См. раздел "Безопасные потоки проверки подлинности" для безопасной конфигурации и потока проверки подлинности.
Убедитесь, что ведение журнала и диагностика настроены в достаточной степени и в удобной форме. Например, соответствующая конфигурация ведения журнала, теги запросов и Application Insights.
Восстановление после ошибок. Проанализируйте непредвиденные ситуации для распространенных сценариев сбоев, такие как откат версий, резервные серверы, горизонтальное масштабирование и балансировка нагрузки, устранение атак типа "отказ в обслуживании" и резервное копирование данных.
Развертывание и миграция приложений. Спланируйте, как будет применяться миграция во время развертывания. Если миграция выполняется при запуске приложения, на нее могут негативно повлиять проблемы с параллелизмом, к тому же для нее потребуются более высокие разрешения по сравнению с обычной работой. Используйте промежуточное хранение, чтобы упростить восстановление после неустранимых ошибок во время миграции. Дополнительные сведения см. в разделе Применение миграций.
Подробное изучение и тестирование созданных миграций. Необходимо тщательно протестировать миграции перед применением к рабочим данным. Форму схемы и типы столбцов невозможно легко изменить, если таблицы содержат рабочие данные. Например, в SQL Server nvarchar(max) и decimal(18, 2) редко являются наиболее подходящими типами для столбцов, сопоставленных со строковыми и десятичными свойствами. Однако в EF они используются по умолчанию, так как EF не знает о вашем конкретном сценарии.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
В этом модуле описаны шаги по созданию проекта доступа к данным. Вы подключаетесь к реляционной базе данных и создаете запросы на создание, чтение, обновление и удаление (CRUD) с помощью Entity Framework Core (EF Core).