Entity Framework (EF) Core è una versione leggera, estesibile, open-source e multipiattaforma della popolare tecnologia di accesso ai dati Entity Framework.
EF Core può essere utilizzato come mapper oggetto-relazionale (O/RM) in modo che gli sviluppatori .NET possano lavorare con database con oggetti .NET e così da non dover scrivere la maggior parte del codice di accesso ai dati frequentemente.
Fornitore di database:Il login del link ipertestuale è visibile.
L'ambiente utilizzato in questo articolo:
- Strumenti Aperti: VS 2017
- Versione dotnet: 2.1.301
- Database: SQL Server 2012
Crea un progetto
1: BaiDuPan.WebUI è un ASP.NET per creare un'applicazione web Core;
2: BaiDuPan.DomainModel serve a creare una libreria di classi (.NET Core);
Aggiungi un riferimento Core per l'Entity Framework
Sviluppato con vs2017. Progetto NET Framework, quando aggiungi ef 6, puoi aggiungerlo direttamente cliccando con il tasto destro sul progetto, come mostrato nella figura qui sotto:
Tuttavia, i core EF non possono essere aggiunti nel modo sopra.
Comando PM:
Secondo l'ordine sopra indicato,Il programma aggiunge automaticamente i pacchetti di dipendenza necessariQuindi, non c'è bisogno di aggiungere il pacchetto Microsoft.EntityFrameworkCore.
Aggiungi modelli di contesto ed entità
Modelli di film:
Contesto del database PanDb:
Boot, che aggiunge l'iniezione di dipendenza dal contesto del database (Qui devi aggiungere un riferimento DomainModel all'interfaccia web):
Il codice sopra riportato richiede che il progetto faccia riferimento a Microsoft.EntityFrameworkCore.SqlServer, ma BaiDuPan.WebUI non deve necessariamente fare riferimento a Microsoft.EntityFrameworkCore.SqlServer, perché non viene segnalato un errore?
Microsoft.AspNetCore.App pacchetto include tutte le funzionalità di ASP.NET Core 2.1 e successive e di Entity Framework Core 2.1 e successive. I modelli di progetto predefiniti per ASP.NET Core 2.1 e successivi utilizzano questo pacchetto. Microsoft.AspNetCore.App pacchetti sono raccomandati per applicazioni con ASP.NET Core 2.1 e successivi e Entity Framework Core 2.1 e successive.
appsettings.json Configura la stringa di connessione al database:
Prova a iniziare il progetto con il seguente errore:
L'errore NU1107 rileva un conflitto di versione in Microsoft.EntityFrameworkCore. Fare riferimento direttamente al pacchetto dal progetto risolve questo problema. 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 Il motivo è che c'è un conflitto di versione tra i due progetti: prova a installare una versione superiore di ef core in BaiDuPan.WebUI, il nuovo errore è il seguente:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versione 2.2.4 OTTIENIhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Ripristino del pacchetto di 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: Conflitto di versione rilevato in Microsoft.EntityFrameworkCore. Fare riferimento direttamente al pacchetto dal progetto risolve questo problema. 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). Posizione Linea: 1 Personaggi: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versione 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NonSpecificato: (:) [Install-Package], Eccezione + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Install-Package: Ripristino del pacchetto fallito. Annullamento delle modifiche ai pacchetti per "BaiDuPan.WebUI". Posizione Linea: 1 Personaggi: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versione 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NonSpecificato: (:) [Install-Package], Eccezione + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Orario Disponibile: 00:00:01.4208784 PM>
Cosa fare? La soluzione è la seguente:
Downgrade, il progetto BaiDuPan.WebUI fa riferimento a Microsoft.EntityFrameworkCore 2.1.1, quindi riesecutiamo il comando nuget nel progetto BaiDuPan.DomainModel, come segue:
In questo modo, garantiamo che tutti i progetti abbiano la stessa versione EF Core.
Inizializzare il database
Il database e la tabella sono creati con successo come mostrato nell'immagine seguente:
Aggiungi il controller MovieController
Il codice è il seguente:
Il metodo Index consiste nel consultare tutti i dati nella tabella Movie del database, mentre il metodo Create è aggiungere nuovi dati; proviamo ad aggiungere un dato e richiederlo al postino, come mostrato nella figura sottostante:
Il login del link ipertestuale è visibile.Richiesta POST
Il programma è riuscito a eseguire senza intoppi, senza eccezioni, dimostrando che l'inserimento è stato riuscito e l'accesso è stato tentato:Il login del link ipertestuale è visibile.Consulta tutti i dati come mostrato nella figura sottostante:
Per quanto riguarda modifiche e cancellazioni, è ovvio!
Risorse:
Nucleo del Framework Entity:Il login del link ipertestuale è visibile.
ASP.NET Nucleo:Il login del link ipertestuale è visibile.
(Fine)
|