Entity Framework (EF) Core — это лёгкая, расширяемая, открытая и кроссплатформенная версия популярной технологии доступа к данным Entity Framework.
EF Core может использоваться как объектно-реляционный отображение (O/RM), чтобы разработчики .NET могли работать с базами данных с .NET-объектами, чтобы им не приходилось часто писать большую часть кода доступа к данным.
Поставщик базы данных:Вход по гиперссылке виден.
Используемая в этой статье окружающая среда:
- Open Tools: VS 2017
- Версия dotnet: 2.1.301
- База данных: SQL Sever 2012
Создайте проект
1: BaiDuPan.WebUI — это ASP.NET создания основного веб-приложения;
2: BaiDuPan.DomainModel создаёт библиотеку классов (.NET Core);
Добавить ссылку на ядро Entity Framework
Разработано с помощью vs2017. Проект NET Framework, при добавлении ef 6, вы можете напрямую добавить его, кликнув правой кнопкой мыши по проекту, как показано на рисунке ниже:
Однако ядра EF нельзя добавлять таким образом.
Команда PM:
По приведённому выше порядку,Программа автоматически добавляет необходимые пакеты зависимостейПоэтому нет необходимости добавлять пакет Microsoft.EntityFrameworkCore.
Добавьте контекстные и сущностные модели.
Модели из фильмов:
Контекст базы данных PanDb:
Класс запуска, который добавляет инъекцию зависимости контекста базы данных (Здесь нужно добавить ссылку на DomainModel в WebUI):
Вышеуказанный код требует, чтобы проект ссылался на Microsoft.EntityFrameworkCore.SqlServer, но BaiDuPan.WebUI не нужно ссылаться на Microsoft.EntityFrameworkCore.SqlServer, почему ошибка не сообщается?
Microsoft.AspNetCore.App пакет включает все функции ASP.NET Core 2.1 и более поздних версий, а также Entity Framework Core 2.1 и новее. Шаблоны проектов по умолчанию для ASP.NET Core 2.1 и более поздних версий используют этот пакет. Microsoft.AspNetCore.App пакеты рекомендуются для приложений с ASP.NET Core 2.1 и новее, а также Entity Framework Core 2.1 и новее.
appsettings.json Настройте строку соединения базы данных:
Попробуйте начать проект со следующей ошибкой:
Ошибка NU1107 обнаруживает конфликт версий в Microsoft.EntityFrameworkCore. Ссылка на пакет напрямую из проекта решает эту проблему. BaiDuPan.WebUI -> BaiDuPan.DomainModel -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4) BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 && < 2.2.0). BaiDuPan.WebUI C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj 1 Причина в том, что между двумя проектами существует конфликт версий, попытайтесь установить более высокую версию ef core в BaiDuPan.WebUI, новая ошибка выглядит следующим образом:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 ПОЛУЧИТЬhttps://api.nuget.org/v3/registr ... qlserver/index.json КЭШhttps://api.nuget.org/v3/registr ... qlserver/index.json Откат пакета C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj...
NU1608: 检测到的包版本在依赖项约束之外: Microsoft.AspNetCore.App 2.1.1 需要 Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0),但版本 Microsoft.EntityFrameworkCore.SqlServer 2.2.4 已解决。 Install-Package: NU1107: Обнаружен конфликт версий в Microsoft.EntityFrameworkCore. Ссылка на пакет напрямую из проекта решает эту проблему. BaiDuPan.WebUI -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4) BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 && < 2.2.0). Линия локации: 1 Персонажи: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificified: (:) [Install-Package], Исключение + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Восстановление пакета не удалось. Откат изменений пакетов для «BaiDuPan.WebUI». Линия локации: 1 Персонажи: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificified: (:) [Install-Package], Исключение + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Время соответствования: 00:00:01.4208784 PM>
Что делать? Решение следующее:
При понижении проекта BaiDuPan.WebUI ссылается на Microsoft.EntityFrameworkCore 2.1.1, поэтому мы повторно выполняем команду nuget в проекте BaiDuPan.DomainModel следующим образом:
Таким образом, мы гарантируем, что все проекты имеют одинаковую версию EF Core.
Инициализация базы данных
База данных и таблица успешно создаются, как показано на следующем изображении:
Добавьте контроллер MovieController
Код таков:
Метод Index предназначен для запроса всех данных в таблице Movie базы данных, а метод Create — для добавления новых данных, давайте попробуем добавить фрагмент данных и запросить его у почтальона, как показано на рисунке ниже:
Вход по гиперссылке виден.Запрос POST
Программа работала плавно, никаких исключений не было сделано, что подтверждало успешность вставки, и попытка доступа была выполнена:Вход по гиперссылке виден.Запросите все данные, как показано на рисунке ниже:
Что касается модификаций и удалений, это само собой разумеется!
Ресурсы:
Ядро Структуры Сущности:Вход по гиперссылке виден.
ASP.NET Ядро:Вход по гиперссылке виден.
(Конец)
|