O Entity Framework (EF) Core é uma versão leve, extensível, de código aberto e multiplataforma da popular tecnologia de acesso a dados Entity Framework.
O EF Core pode ser usado como um mapeador objeto-relacional (O/RM) para que desenvolvedores .NET possam trabalhar com bancos de dados com objetos .NET e assim não precisem escrever a maior parte do código de acesso a dados com frequência.
Provedor de Banco de Dados:O login do hiperlink está visível.
O ambiente utilizado neste artigo:
- Ferramentas Abertas: VS 2017
- Versão dotnet: 2.1.301
- Banco de Dados: SQL Server 2012
Crie um projeto
1: BaiDuPan.WebUI é uma ASP.NET para criar uma aplicação web Core;
2: BaiDuPan.DomainModel serve para criar uma biblioteca de classes (.NET Core);
Adicionar uma referência Core do Entity Framework
Desenvolvido com vs2017. Projeto NET Framework, ao adicionar ef 6, você pode adicioná-lo diretamente clicando com o botão direito no projeto, como mostrado na figura abaixo:
No entanto, núcleos EF não podem ser adicionados da forma acima.
Comando PM:
Pela ordem acima,O programa adiciona automaticamente os pacotes de dependência necessáriosPortanto, não há necessidade de adicionar o pacote Microsoft.EntityFrameworkCore.
Adicionar modelos de contexto e entidade
Modelos de Filme:
Contexto do banco de dados PanDb:
Classe Startup, que adiciona injeção de dependência de contexto de banco de dados (Aqui você precisa adicionar uma referência DomainModel à WebUI):
O código acima exige que o projeto faça referência ao Microsoft.EntityFrameworkCore.SqlServer, mas o BaiDuPan.WebUI não precisa referenciar o Microsoft.EntityFrameworkCore.SqlServer, por que ele não é reportado como erro?
Microsoft.AspNetCore.App pacote inclui todos os recursos do Core 2.1 e posteriores ASP.NET Entity Framework Core 2.1 e posteriores. Modelos padrão de projeto para ASP.NET Core 2.1 e posteriores usam este pacote. Microsoft.AspNetCore.App pacotes são recomendados para aplicações com ASP.NET Core 2.1 e posteriores e Entity Framework Core 2.1 e posteriores.
appsettings.json Configure a cadeia de conexão do banco de dados:
Tente iniciar o projeto com o seguinte erro:
O erro NU1107 detecta um conflito de versões no Microsoft.EntityFrameworkCore. Referenciar o pacote diretamente do projeto resolve esse 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 O motivo é que há um conflito de versões entre os dois projetos; tente instalar uma versão superior do ef core no BaiDuPan.WebUI, o novo erro é o seguinte:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versão 2.2.4 OBTERhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Revertendo o pacote 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: Conflito de versão detectado no Microsoft.EntityFrameworkCore. Referenciar o pacote diretamente do projeto resolve esse 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). Linha de Localização: 1 Personagens: 1 + Pacote de instalação Microsoft.EntityFrameworkCore.SqlServer -versão 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoriaInformação : NotSpecified: (:) [Install-Package], Exceção + TotalQualificadoErroId: NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Install-Package: Restauração do pacote falhada. Revertendo as alterações de pacotes para "BaiDuPan.WebUI". Linha de Localização: 1 Personagens: 1 + Pacote de instalação Microsoft.EntityFrameworkCore.SqlServer -versão 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoriaInformação : NotSpecified: (:) [Install-Package], Exceção + TotalQualificadoErroId: NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommandCommand
Horário Aproximado: 00:00:01.4208784 PM>
O que fazer? A solução é a seguinte:
Downgrade, o projeto BaiDuPan.WebUI faz referência ao Microsoft.EntityFrameworkCore 2.1.1, então reexecutamos o comando nuget no projeto BaiDuPan.DomainModel, da seguinte forma:
Dessa forma, garantimos que todos os projetos tenham a mesma versão do EF Core.
Inicializar o banco de dados
O banco de dados e a tabela são criados com sucesso, conforme mostrado na imagem a seguir:
Adicionar o controlador MovieController
O código é o seguinte:
O método Index é consultar todos os dados na tabela Movie do banco de dados, e o método Create é adicionar novos dados; vamos tentar adicionar um dado e solicitá-lo com o carteiro, como mostrado na figura abaixo:
O login do hiperlink está visível.Pedido POST
O programa conseguiu executar suavemente, nenhuma exceção foi lançada, provando que a inserção foi bem-sucedida, e o acesso foi tentado:O login do hiperlink está visível.Consulte todos os dados conforme mostrado na figura abaixo:
Quanto a modificações e deleções, nem precisa dizer!
Recursos:
Núcleo do Framework da Entidade:O login do hiperlink está visível.
ASP.NET Núcleo:O login do hiperlink está visível.
(Fim)
|