Entity Framework (EF) Core es una versión ligera, extensible, de código abierto y multiplataforma de la popular tecnología de acceso a datos Entity Framework.
EF Core puede usarse como un mapador objeto-relacional (O/RM) para que los desarrolladores .NET puedan trabajar con bases de datos con objetos .NET y así no tener que escribir la mayor parte del código de acceso a datos con frecuencia.
Proveedor de bases de datos:El inicio de sesión del hipervínculo es visible.
El entorno utilizado en este artículo:
- Herramientas abiertas: VS 2017
- Versión dotnet: 2.1.301
- Base de datos: SQL Server 2012
Crea un proyecto
1: BaiDuPan.WebUI es un ASP.NET para crear una aplicación web Core;
2: BaiDuPan.DomainModel es crear una biblioteca de clases (.NET Core);
Añadir una referencia Núcleo del Entity Framework
Desarrollado con vs2017. Proyecto NET Framework, al añadir ef 6, puedes añadirlo directamente haciendo clic derecho en el proyecto, como se muestra en la figura de abajo:
Sin embargo, no se pueden añadir núcleos EF de la forma anterior.
Comando PM:
Por el orden anterior,El programa añade automáticamente los paquetes de dependencias requeridosAsí que no es necesario añadir el paquete Microsoft.EntityFrameworkCore.
Añadir modelos de contexto y entidades
Modelos de películas:
Contexto de la base de datos PanDb:
Clase Startup, que añade inyección de dependencias en el contexto de la base de datos (Aquí necesitas añadir una referencia DomainModel a la interfaz web):
El código anterior requiere que el proyecto haga referencia a Microsoft.EntityFrameworkCore.SqlServer, pero BaiDuPan.WebUI no necesita referenciar Microsoft.EntityFrameworkCore.SqlServer, ¿por qué no se reporta un error?
Microsoft.AspNetCore.App paquete incluye todas las características de ASP.NET Core 2.1 y posteriores y de Entity Framework Core 2.1 y posteriores. Las plantillas de proyectos predeterminadas para ASP.NET Core 2.1 y posteriores utilizan este paquete. Microsoft.AspNetCore.App paquetes se recomiendan para aplicaciones con ASP.NET Core 2.1 y posteriores, y Entity Framework Core 2.1 y posteriores.
appsettings.json Configurar la cadena de conexión a la base de datos:
Intenta iniciar el proyecto con el siguiente error:
El error NU1107 detecta un conflicto de versiones en Microsoft.EntityFrameworkCore. Referenciar el paquete directamente desde el proyecto resuelve este 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 La razón es que hay un conflicto de versiones entre ambos proyectos; intenta instalar una versión superior de ef core en BaiDuPan.WebUI, el nuevo error es el siguiente:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versión 2.2.4 OBTENERhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Revertiendo el paquete de 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: Conflicto de versiones detectado en Microsoft.EntityFrameworkCore. Referenciar el paquete directamente desde el proyecto resuelve este 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). Línea de localización: 1 Personajes: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -versión 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Install-Package: Restauración de paquetes fallida. Revertir los cambios de paquetes para "BaiDuPan.WebUI". Línea de localización: 1 Personajes: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -versión 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Hora aproximada: 00:00:01.4208784 PM>
¿Qué hacer? La solución es la siguiente:
En retrogradación, el proyecto BaiDuPan.WebUI hace referencia a Microsoft.EntityFrameworkCore 2.1.1, así que reejecutamos el comando nuget en el proyecto BaiDuPan.DomainModel, de la siguiente manera:
De este modo, garantizamos que todos los proyectos tengan la misma versión EF Core.
Inicializar la base de datos
La base de datos y la tabla se crean con éxito como se muestra en la siguiente imagen:
Añadir el controlador MovieController
El código es el siguiente:
El método Index es consultar todos los datos en la tabla de Películas de la base de datos, y el método Create es añadir nuevos datos; intentemos añadir un dato y solicitarlo con el cartero, como se muestra en la figura de abajo:
El inicio de sesión del hipervínculo es visible.Solicitud POST
El programa pudo ejecutarse sin problemas, no se hicieron excepciones, demostrando que la inserción fue exitosa y se intentó el acceso:El inicio de sesión del hipervínculo es visible.Consulta todos los datos como se muestra en la figura siguiente:
En cuanto a modificaciones y eliminaciones, ¡no hace falta decirlo!
Recursos:
Núcleo del Marco de Entidades:El inicio de sesión del hipervínculo es visible.
ASP.NET Núcleo:El inicio de sesión del hipervínculo es visible.
(Fin)
|