Entity Framework (EF) Core je lahka, razširljiva, odprtokodna in večplatformska različica priljubljene tehnologije za dostop do podatkov Entity Framework.
EF Core se lahko uporablja kot objektno-relacijski preslikavalnik (O/RM), tako da lahko .NET razvijalci delajo z bazami podatkov z .NET objekti, tako da jim ni treba pogosto pisati večine kode za dostop do podatkov.
Ponudnik podatkovne baze:Prijava do hiperpovezave je vidna.
Okolje, uporabljeno v tem članku:
- Odprta orodja: VS 2017
- Dotnet različica: 2.1.301
- Baza podatkov: SQL Sever 2012
Ustvarite projekt
1: BaiDuPan.WebUI je ASP.NET za ustvarjanje osnovne spletne aplikacije;
2: BaiDuPan.DomainModel je namenjen ustvarjanju knjižnice razredov (.NET Core);
Dodajte referenčno referenco za Entity Framework Core
Razvito z vs2017. Projekt NET Framework, ko dodajate ef 6, ga lahko dodate neposredno z desnim klikom na projekt, kot je prikazano na spodnji sliki:
Vendar pa EF jeder ni mogoče dodajati na zgoraj opisan način.
PM ukaz:
Po zgornjem vrstnem redu,Program samodejno doda potrebne pakete odvisnostiTorej ni potrebe po dodajanju paketa Microsoft.EntityFrameworkCore.
Dodajte modele konteksta in entitet
Filmski modeli:
Kontekst baze podatkov PanDb:
Razred Startup, ki doda injekcijo kontekstne odvisnosti baze podatkov (Tukaj morate dodati referenco na DomainModel v spletni vmesnik):
Zgornja koda zahteva, da projekt sklicuje na Microsoft.EntityFrameworkCore.SqlServer, medtem ko BaiDuPan.WebUI ne potrebuje sklicevanja na Microsoft.EntityFrameworkCore.SqlServer, zakaj torej ni prijavljena kot napaka?
Microsoft.AspNetCore.App paket vključuje vse funkcije ASP.NET Core 2.1 in novejših ter Entity Framework Core 2.1 in novejših. Privzete predloge projektov za ASP.NET Core 2.1 in novejše uporabljajo ta paket. Microsoft.AspNetCore.App paketi so priporočeni za aplikacije z ASP.NET Core 2.1 in novejšimi ter Entity Framework Core 2.1 in novejšimi.
appsettings.json Nastavite niz povezave z bazo podatkov:
Poskusite začeti projekt z naslednjo napako:
Napaka NU1107 zazna konflikt različic v Microsoft.EntityFrameworkCore. Neposredno sklicevanje na paket iz projekta reši ta problem. 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 Razlog je v konfliktu različic med obema projektoma, poskusite namestiti višjo različico ef core v BaiDuPan.WebUI, nova napaka je naslednja:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 DOBIhttps://api.nuget.org/v3/registr ... qlserver/index.json PREDPOMNILNIKhttps://api.nuget.org/v3/registr ... qlserver/index.json Povrnitev paketa 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: Zaznan konflikt različic v Microsoft.EntityFrameworkCore. Neposredno sklicevanje na paket iz projekta reši ta problem. 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). Vrstica lokacije: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], izjema + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Namestitveni paket: Obnovitev paketa ni uspela. Razveljavitev sprememb paketa za "BaiDuPan.WebUI". Vrstica lokacije: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], izjema + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Čas prihoda: 00:00:01.4208784 PM>
Kaj storiti? Rešitev je naslednja:
Downgrade, projekt BaiDuPan.WebUI se sklicuje na Microsoft.EntityFrameworkCore 2.1.1, zato ponovno izvedemo ukaz nuget v projektu BaiDuPan.DomainModel, kot sledi:
Na ta način zagotavljamo, da imajo vsi projekti enako različico EF Core.
Inicializirajte bazo podatkov
Baza podatkov in tabela sta uspešno ustvarjeni, kot je prikazano na naslednji sliki:
Dodajte krmilnik MovieController
Koda je naslednja:
Metoda Index je poizvedba po vseh podatkih v tabeli Movie v bazi podatkov, metoda Create pa za dodajanje novih podatkov, poskusimo dodati podatek in ga zahtevati pri poštarju, kot je prikazano na spodnji sliki:
Prijava do hiperpovezave je vidna.POST zahteva
Program se je lahko izvajal gladko, brez izjem, kar dokazuje, da je vstavljanje uspešno in je bil poskus dostopa:Prijava do hiperpovezave je vidna.Poizvedba vseh podatkov, kot je prikazano na spodnji sliki:
Kar zadeva spremembe in izbrise, je to samoumevno!
Sredstva:
Jedro Entity Framework:Prijava do hiperpovezave je vidna.
ASP.NET jedro:Prijava do hiperpovezave je vidna.
(Konec)
|