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 за създаване на Core уеб приложение;
2: BaiDuPan.DomainModel е за създаване на библиотека с класове (.NET Core);
Добавете референция за Entity Framework Core
Разработено с 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 已解决。 Инсталационен пакет: 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 -версия 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Изключение + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Възстановяването на пакета не успя. Връщане на промените в пакета за "BaiDuPan.WebUI". Линия за местоположение: 1 Персонажи: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -версия 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [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 е да добавим нови данни, нека опитаме да добавим парче данни и да го поискаме от Postman, както е показано на фигурата по-долу:
Входът към хиперлинк е видим.Заявка за POST
Програмата успя да се изпълнява гладко, без изключения, което доказва, че вмъкването е успешно, и достъпът беше опитан:Входът към хиперлинк е видим.Заявете всички данни, както е показано на фигурата по-долу:
Що се отнася до модификациите и изтриванията, това е ясно!
Ресурси:
Ядро на рамката на обекти:Входът към хиперлинк е видим.
ASP.NET Ядро:Входът към хиперлинк е видим.
(Край)
|