Entity Framework (EF) Core est une version légère, extensible, open source et multiplateforme de la populaire technologie d’accès aux données Entity Framework.
EF Core peut être utilisé comme un mapper objet-relationnel (O/RM) afin que les développeurs .NET puissent travailler avec des bases de données avec des objets .NET afin de ne pas avoir à écrire fréquemment la plupart du code d’accès aux données.
Fournisseur de base de données :La connexion hyperlientérée est visible.
L’environnement utilisé dans cet article :
- Outils ouverts : VS 2017
- version dotnet : 2.1.301
- Base de données : SQL Server 2012
Créer un projet
1 : BaiDuPan.WebUI est un ASP.NET pour créer une application web centrale ;
2 : BaiDuPan.DomainModel sert à créer une bibliothèque de classes (.NET Core) ;
Ajouter une référence centrale du cadre d’entité
Développé avec vs2017. NET Framework, lorsque vous ajoutez EF 6, vous pouvez l’ajouter directement en faisant un clic droit sur le projet, comme montré dans la figure ci-dessous :
Cependant, les cœurs EF ne peuvent pas être ajoutés de la manière ci-dessus.
Commande PM :
Par l’ordre ci-dessus,Le programme ajoute automatiquement les packages de dépendances requisIl n’est donc pas nécessaire d’ajouter le paquet Microsoft.EntityFrameworkCore.
Ajouter des modèles contextuels et d’entités
Mannequins de films :
Contexte de la base de données PanDb :
Startup class, qui ajoute l’injection de dépendance contextuelle de base de données (Ici, il faut ajouter une référence DomainModel à l’interface Web):
Le code ci-dessus exige que le projet fasse référence à Microsoft.EntityFrameworkCore.SqlServer, mais BaiDuPan.WebUI n’a pas besoin de référencer Microsoft.EntityFrameworkCore.SqlServer, pourquoi n’est-il pas signalé d’erreur ?
Microsoft.AspNetCore.App package inclut toutes les fonctionnalités de ASP.NET Core 2.1 et versions ultérieures ainsi que d’Entity Framework Core 2.1 et ultérieures. Les modèles de projet par défaut pour ASP.NET Core 2.1 et ultérieurs utilisent ce paquet. Microsoft.AspNetCore.App packages sont recommandés pour les applications avec ASP.NET Core 2.1 et versions ultérieures, ainsi que Entity Framework Core 2.1 et ultérieures.
appsettings.json Configurez la chaîne de connexion à la base de données :
Essayez de commencer le projet avec l’erreur suivante :
L’erreur NU1107 détecte un conflit de version dans Microsoft.EntityFrameworkCore. Référencer directement le package depuis le projet résout ce problème. 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 La raison est qu’il y a un conflit de versions entre les deux projets, essayez d’installer une version supérieure du core EF dans BaiDuPan.WebUI, la nouvelle erreur est la suivante :
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 AVOIRhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Retour en arrière du package 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 : Conflit de version détecté dans Microsoft.EntityFrameworkCore. Référencer directement le package depuis le projet résout ce problème. 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). Ligne de lieu : 1 Personnages : 1 + Install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified : (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommandeInstallPackage
Install-Package : Échec de la restauration du paquet. Retour en arrière des changements de paquet pour « BaiDuPan.WebUI ». Ligne de lieu : 1 Personnages : 1 + Install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified : (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommandeInstallPackage
Heure : 00:00:01.4208784 PM >
Que faire ? La solution est la suivante :
Rétrogradation, le projet BaiDuPan.WebUI fait référence à Microsoft.EntityFrameworkCore 2.1.1, donc nous réexécutons la commande nuget dans le projet BaiDuPan.DomainModel, comme suit :
De cette façon, nous garantissons que tous les projets ont la même version EF Core.
Initialiser la base de données
La base de données et la table sont créées avec succès comme montré sur l’image suivante :
Ajouter le contrôleur MovieController
Le code est le suivant :
La méthode Index consiste à interroger toutes les données dans la table Movie de la base de données, et la méthode Create consiste à ajouter de nouvelles données, essayons d’ajouter une donnée et de la demander à Postman, comme montré dans la figure ci-dessous :
La connexion hyperlientérée est visible.Demande POST
Le programme a pu s’exécuter sans problème, aucune exception n’a été faite, prouvant que l’insertion a réussi, et l’accès a été tenté :La connexion hyperlientérée est visible.Interrogez toutes les données comme montré dans la figure ci-dessous :
En ce qui concerne les modifications et suppressions, cela va sans dire !
Ressources:
Cœur du cadre d’entité :La connexion hyperlientérée est visible.
ASP.NET Core :La connexion hyperlientérée est visible.
(Fin)
|