Entity Framework (EF) Core este o versiune ușoară, extensibilă, open-source și cross-platform a popularei tehnologii de acces la date Entity Framework.
EF Core poate fi folosit ca un mapper obiect-relațional (O/RM), astfel încât dezvoltatorii .NET să poată lucra cu baze de date cu obiecte .NET, astfel încât să nu fie nevoiți să scrie frecvent majoritatea codului de acces la date.
Furnizor de baze de date:Autentificarea cu hyperlink este vizibilă.
Mediul folosit în acest articol:
- Unelte deschise: VS 2017
- Versiunea dotnet: 2.1.301
- Bază de date: SQL Sever 2012
Creează un proiect
1: BaiDuPan.WebUI este o ASP.NET pentru a crea o aplicație web de bază;
2: BaiDuPan.DomainModel este pentru a crea o bibliotecă de clase (.NET Core);
Adaugă o referință de bază pentru Entity Framework
Dezvoltat cu vs2017. NET Framework, când adaugi ef 6, îl poți adăuga direct făcând clic dreapta pe proiect, așa cum se arată în figura de mai jos:
Totuși, nucleele EF nu pot fi adăugate în modul de mai sus.
Comanda PM:
Prin ordinul de mai sus,Programul adaugă automat pachetele de dependențe necesareAșadar, nu este nevoie să adaugi pachetul Microsoft.EntityFrameworkCore.
Adaugă modele de context și entități
Modele de film:
Contextul bazei de date PanDb:
Boot, care adaugă injectarea dependenței contextului bazei de date (Aici trebuie să adaugi o referință DomainModel în WebUI):
Codul de mai sus necesită ca proiectul să facă referire la Microsoft.EntityFrameworkCore.SqlServer, dar BaiDuPan.WebUI nu trebuie să facă referire la Microsoft.EntityFrameworkCore.SqlServer, de ce nu este raportat o eroare?
Microsoft.AspNetCore.App pachet include toate funcționalitățile ASP.NET Core 2.1 și ulterioare și Entity Framework Core 2.1 și versiunile ulterioare. Șabloanele implicite de proiect pentru ASP.NET Core 2.1 și versiunile ulterioare folosesc acest pachet. Microsoft.AspNetCore.App pachete sunt recomandate pentru aplicațiile cu ASP.NET Core 2.1 și versiunile ulterioare și Entity Framework Core 2.1 și versiunile ulterioare.
appsettings.json Configurează șirul de conexiune la baza de date:
Încearcă să începi proiectul cu următoarea eroare:
Eroarea NU1107 detectează un conflict de versiune în Microsoft.EntityFrameworkCore. Referențierea directă la pachet din proiect rezolvă această 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 Motivul este că există un conflict de versiuni între cele două proiecte; încearcă să instalezi o versiune superioară a ef core în BaiDuPan.WebUI, iar noua eroare este următoarea:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versiunea 2.2.4 PLEACĂhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Revenirea la pachetul 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: Conflict de versiune detectat în Microsoft.EntityFrameworkCore. Referențierea directă la pachet din proiect rezolvă această 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). Linie de locație: 1 Personaje: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versiunea 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Install-Package: Restaurarea pachetului a eșuat. Anularea modificărilor de pachet pentru "BaiDuPan.WebUI". Linie de locație: 1 Personaje: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versiunea 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Ora estimată: 00:00:01.4208784 PM>
Ce să fac? Soluția este următoarea:
Downgrade, proiectul BaiDuPan.WebUI face referire la Microsoft.EntityFrameworkCore 2.1.1, așa că reexecutăm comanda nuget în proiectul BaiDuPan.DomainModel, după cum urmează:
Astfel, garantăm că toate proiectele au aceeași versiune EF Core.
Inițializarea bazei de date
Baza de date și tabelul sunt create cu succes, așa cum se arată în imaginea următoare:
Adaugă controllerul MovieController
Codul este următorul:
Metoda Index este de a interoga toate datele din tabelul Movie din baza de date, iar metoda Create este de a adăuga date noi, să încercăm să adăugăm o bucată de date și să o solicităm cu poștașul, așa cum se arată în figura de mai jos:
Autentificarea cu hyperlink este vizibilă.Cerere POST
Programul a putut rula lin, fără excepții, dovedind că inserția a fost reușită și accesul a fost încercat:Autentificarea cu hyperlink este vizibilă.Interoghează toate datele așa cum este prezentat în figura de mai jos:
În ceea ce privește modificările și ștergerile, este de la sine înțeles!
Resurse:
Nucleul Cadrului Entității:Autentificarea cu hyperlink este vizibilă.
ASP.NET Nucleu:Autentificarea cu hyperlink este vizibilă.
(Sfârșit)
|