Entity Framework (EF) Core to lekka, rozszerzalna, otwartoźródłowa i wieloplatformowa wersja popularnej technologii dostępu do danych Entity Framework.
EF Core może być używany jako mapper obiektowo-relacyjny (O/RM), dzięki czemu programiści .NET mogą pracować z bazami danych z obiektami .NET i nie musieć często zapisywać większości kodu dostępu do danych.
Dostawca bazy danych:Logowanie do linku jest widoczne.
Środowisko użyte w tym artykule:
- Otwarte Narzędzia: VS 2017
- Wersja dotnet: 2.1.301
- Baza danych: SQL Sever 2012
Stwórz projekt
1: BaiDuPan.WebUI to ASP.NET do tworzenia podstawowej aplikacji webowej;
2: BaiDuPan.DomainModel służy do tworzenia biblioteki klas (.NET Core);
Dodaj referencję do rdzenia Entity Framework
Opracowane w VS2017. Projekt NET Framework, dodając ef 6, możesz dodać go bezpośrednio, klikając prawym przyciskiem myszy na projekt, jak pokazano na poniższym rysunku:
Jednak rdzeni EF nie można dodawać w powyższy sposób.
Polecenie PM:
Zgodnie z powyższym porządkiem,Program automatycznie dodaje wymagane pakiety zależnościNie ma potrzeby dodawania pakietu Microsoft.EntityFrameworkCore.
Dodaj modele kontekstowe i entity
Modele filmowe:
Kontekst bazy danych PanDb:
Klasa startowa, która dodaje zastrzyk kontekstu bazy danych (Tutaj musisz dodać referencję do DomainModel do interfejsu WebUI):
Powyższy kod wymaga od projektu odniesienia do Microsoft.EntityFrameworkCore.SqlServer, ale BaiDuPan.WebUI nie musi odwoływać się do Microsoft.EntityFrameworkCore.SqlServer, dlaczego nie jest zgłaszany jako błąd?
Microsoft.AspNetCore.App pakiet zawiera wszystkie funkcje ASP.NET Core 2.1 i nowszych oraz Entity Framework Core 2.1 i nowszych. Domyślne szablony projektów dla ASP.NET Core 2.1 i późniejszych korzystają z tego pakietu. Microsoft.AspNetCore.App pakiety są zalecane dla aplikacji z ASP.NET Core 2.1 i nowszymi oraz Entity Framework Core 2.1 i nowszymi.
appsettings.json Konfiguruj ciąg połączeń bazy danych:
Spróbuj rozpocząć projekt z następującym błędem:
Błąd NU1107 wykrywa konflikt wersji w Microsoft.EntityFrameworkCore. Bezpośrednie odniesienie do pakietu z projektu rozwiązuje ten 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 Powodem jest konflikt wersji między tymi dwoma projektami, spróbuj zainstalować wyższą wersję rdzenia ef w BaiDuPan. WebUI, nowy błąd wygląda następująco:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 POBIERZhttps://api.nuget.org/v3/registr ... qlserver/index.json PAMIĘĆ PODRĘCZNAhttps://api.nuget.org/v3/registr ... qlserver/index.json Przywracam pakiet 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: Wykryto konflikt wersji w Microsoft.EntityFrameworkCore. Bezpośrednie odniesienie do pakietu z projektu rozwiązuje ten 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). Linia lokalizacji: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], wyjątek + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Pakiet instalacyjny: Przywrócenie pakietu zakończyło się niepowodzeniem. Cofanie zmian w pakiecie "BaiDuPan.WebUI". Linia lokalizacji: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], wyjątek + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Czas przyjazdu: 00:00:01.4208784 PM>
Co robić? Rozwiązanie jest następujące:
Downgrade, projekt BaiDuPan.WebUI odnosi się do Microsoft.EntityFrameworkCore 2.1.1, więc ponownie wykonujemy polecenie nuget w projekcie BaiDuPan.DomainModel w następujący sposób:
Dzięki temu gwarantujemy, że wszystkie projekty mają tę samą wersję EF Core.
Zainicjalizuj bazę danych
Baza danych i tabela zostały pomyślnie utworzone, jak pokazano na poniższym obrazku:
Dodaj kontroler MovieController
Kod jest następujący:
Metoda Index polega na zapytaniu wszystkich danych w tabeli Movie w bazie danych, a metoda Create polega na dodawaniu nowych danych, spróbujmy dodać fragment danych i poprosić o niego listonosza, jak pokazano na poniższym rysunku:
Logowanie do linku jest widoczne.Prośba POST
Program był w stanie działać płynnie, nie stosowano żadnych wyjątków, co dowodzi, że wstawienie zakończyło się sukcesem i próbowano uzyskać dostęp:Logowanie do linku jest widoczne.Zapytaj wszystkie dane, jak pokazano na poniższym rysunku:
Jeśli chodzi o modyfikacje i usunięcia, to oczywiste!
Zasoby:
Rdzeń Entity Framework:Logowanie do linku jest widoczne.
ASP.NET Rdzeń:Logowanie do linku jest widoczne.
(Koniec)
|