Entity Framework (EF) Core ir populārās Entity Framework datu piekļuves tehnoloģijas viegla, paplašināma, atvērtā koda un starpplatformu versija.
EF Core var izmantot kā objektu relāciju kartētāju (O/RM), lai .NET izstrādātāji varētu strādāt ar datu bāzēm ar .NET objektiem, lai viņiem nebūtu bieži jāraksta lielākā daļa datu piekļuves koda.
Datu bāzes nodrošinātājs:Hipersaites pieteikšanās ir redzama.
Šajā rakstā izmantotā vide:
- Atvērtie rīki: VS 2017
- DotNet versija: 2.1.301
- Datu bāze: SQL Sever 2012
Projekta izveide
1: BaiDuPan.WebUI ir ASP.NET, lai izveidotu pamata tīmekļa lietojumprogrammu;
2: BaiDuPan.DomainModel ir izveidot klases bibliotēku (.NET Core);
Entītiju struktūras pamatatsauces pievienošana
Izstrādāts kopā ar vs2017. NET Framework projekts, pievienojot ef 6, to var tieši pievienot, ar peles labo pogu noklikšķinot uz projekta, kā parādīts zemāk redzamajā attēlā:
Tomēr EF serdeņus nevar pievienot iepriekš minētajā veidā.
PM komanda:
Ar iepriekš minēto rīkojumu,Programma automātiski pievieno nepieciešamās atkarības pakotnesTāpēc nav nepieciešams pievienot Microsoft.EntityFrameworkCore pakotni.
Konteksta un entītiju modeļu pievienošana
Filmu modeļi:
PanDb datu bāzes konteksts:
Startēšanas klase, kas pievieno datu bāzes konteksta atkarības injekciju (Šeit jums jāpievieno DomainModel atsauce WebUI):
Iepriekš minētais kods prasa, lai projekts atsauktos uz Microsoft.EntityFrameworkCore.SqlServer, bet BaiDuPan.WebUI nav jāatsaucas uz Microsoft.EntityFrameworkCore.SqlServer, kāpēc tas netiek ziņots par kļūdu?
Microsoft.AspNetCore.App pakotnē ir iekļautas visas ASP.NET Core 2.1 un jaunākas un Entity Framework Core 2.1 un jaunākas versijas. Noklusējuma projektu veidnes ASP.NET Core 2.1 un jaunākām versijām izmanto šo pakotni. Microsoft.AspNetCore.App pakotnes ir ieteicamas lietojumprogrammām ar ASP.NET Core 2.1 un jaunākām versijām un Entity Framework Core 2.1 un jaunākām versijām.
appsettings.json Konfigurējiet datu bāzes savienojuma virkni:
Mēģiniet sākt projektu ar šādu kļūdu:
Kļūda NU1107 atklāj versiju konfliktu programmā Microsoft.EntityFrameworkCore. Atsauce uz paketi tieši no projekta atrisina šo problēmu. 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 Iemesls ir tāds, ka starp abiem projektiem ir versijas konflikts, mēģiniet instalēt augstāku ef core versiju BaiDuPan.WebUI, jaunā kļūda ir šāda:
PM> instalēšanas pakotne Microsoft.EntityFrameworkCore.SqlServer -versija 2.2.4 IEGŪThttps://api.nuget.org/v3/registr ... qlserver/index.json KEŠATMIŅAhttps://api.nuget.org/v3/registr ... qlserver/index.json Tiek atgriezta pakotne 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 已解决。 Instalēšanas pakotne: NU1107: Microsoft.EntityFrameworkCore konstatēts versiju konflikts. Atsauce uz paketi tieši no projekta atrisina šo problēmu. 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). Atrašanās vietas līnija: 1 Rakstzīmes: 1 + Instalēt pakotni Microsoft.EntityFrameworkCore.SqlServer -versija 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotNorādīts: (:) [Install-Package], Izņēmums + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Instalēšanas pakotne: pakotnes atjaunošana neizdevās. Pakotnes izmaiņu atcelšana "BaiDuPan.WebUI". Atrašanās vietas līnija: 1 Rakstzīmes: 1 + Instalēt pakotni Microsoft.EntityFrameworkCore.SqlServer -versija 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotNorādīts: (:) [Install-Package], Izņēmums + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Laiks apred: 00:00:01.4208784 PM>
Ko darīt? Risinājums ir šāds:
Pazemināšana, BaiDuPan.WebUI projekts atsaucas uz Microsoft.EntityFrameworkCore 2.1.1, tāpēc mēs atkārtoti izpildām nuget komandu BaiDuPan.DomainModel projektā šādi:
Tādējādi mēs garantējam, ka visiem projektiem ir vienāda EF Core versija.
Datu bāzes inicializēšana
Datu bāze un tabula ir veiksmīgi izveidota, kā parādīts šajā attēlā:
MovieController kontrollera pievienošana
Kods ir šāds:
Indeksa metode ir vaicāt visus datus datu bāzē Filmu tabula, un Izveidot metode ir pievienot jaunus datus, mēģināsim pievienot datu gabalu un pieprasīt to ar pastnieku, kā parādīts zemāk redzamajā attēlā:
Hipersaites pieteikšanās ir redzama.POST pieprasījums
Programma varēja darboties nevainojami, netika izmesti izņēmumi, pierādot, ka ievietošana bija veiksmīga, un piekļuve tika mēģināta:Hipersaites pieteikšanās ir redzama.Vaicājiet visus datus, kā parādīts zemāk redzamajā attēlā:
Kas attiecas uz izmaiņām un dzēsumiem, tas ir pats par sevi saprotams!
Resursu:
Entītiju struktūras kodols:Hipersaites pieteikšanās ir redzama.
ASP.NET kodols:Hipersaites pieteikšanās ir redzama.
(Beigas)
|