O NET 6.0 trouxe muitas novidades e uma delas é a não criação do arquivo Startup nas aplicações que forem criadas a partir dos novos templates de projetos.
Hoje eu vou mostrar como configurar aplicações do tipo Console para usar o EF Core 6 fazendo a configuração no arquivo Program do projeto.
Configurando aplicações Console
As aplicações console já não possuíam o arquivo Startup e assim a configuração e inicialização continuam a serem feitas na classe Program.
No Visual Studio 2022 selecione o template Console Application;
Informe o nome do projeto, vou usar o nome ConsoleEFCore6, e sua localização e clique em Next;
A seguir selecione o NET 6 e clique em Create.
Na janela Solution Explorer teremos apenas o arquivo Program.cs.
Instalando os pacotes do EF Core
Agora temos que instalar os pacotes do EF Core 6. Veja as opções:
1- Se sua aplicação for acessar uma base de dados existente e vai apenas acessar os dados, basta instalar pacote do EntityFrameworkCore para o banco de dados desejado.
Neste endereço Provedores do EF Core temos os provedores para os bancos de dados que podemos usar.
A seguir exemplos dos mais usados:
-
Microsoft.EntityFrameworkCore.SqlServer
-
Microsoft.EntityFrameworkCore.Sqlite
-
Microsoft.EntityFrameworkCore.InMemory
-
Npgsql.EntityFrameworkCore.PostgreSQL
-
Pomelo.EntityFrameworkCore.MySql
-
Oracle.EntityFrameworkCore
Se sua aplicação vai usar a abordagem Code-First e criar o banco e as tabelas ou se você vai realizar a engenharia reversa e gerar o modelo a partir de um banco existente então você vai precisar incluir também os seguintes pacotes:
- Microsoft.EntityFrameworkCore.Tools – Executa os comandos do Migrations (Somente para o VS 2022);
- Microsoft.EntityFrameworkCore.Design – Para ferramenta de linha de comando multiplataforma;
Em nosso projeto Console vamos instalar os 3 pacotes sendo que vamos acessar um banco de dados SQL Server. Assim as dependências do projeto devem ficar assim:
Para o exemplo deste artigo eu vou acessar a tabela Estudantes no banco de dados CadastroDB no SQL Server Local.
Armazenando a string de conexão
Podemos armazenar a string de conexão em um arquivo json que pode ser criado com o nome appsettings.json no projeto que pode ser definido com o código abaixo:
{ “ConnectionStrings“: { “DefaultConnection”: “Server=meuserver\\SQLEXPRESS;Database=CadastroDB;Integrated Security=True” } } |
Nota: Se você estiver usando o .NET 7.0 vai precisar incluir na string de conexão a propriedade TrustServerCertificate=True;
Para obter o nome do servidor você pode acessar o SQL Server Management Studio e clicar sobre o servidor e na janela de propriedades obter o nome do servidor:
Assim defina a string de conexão assim:
- Server – <nome_do_servidor>;
- Database – nome do banco de dados a ser acessado;
- Integrated Security = True; (aqui vamos usar as credenciais do windows)
Criando o arquivo de contexto
A seguir temos que criar o arquivo de contexto da aplicação que vai herdar da classe DbContext do EF Core. Este arquivo pode ser visto como o coração do EF Core, pois nele definimos as configurações e mapeamento ORM. É através do arquivo de contexto que poderemos realizar comandos e consultas no banco de dados.
Para isso vamos criar o arquivo AppDbContext no projeto e definir o seu código assim:
1- Usando a string de conexão diretamente
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration;namespace ConsoleEFCore6; public class AppDbContext : DbContext } |
2- Acessando a string de conexão a partir do arquivo appsettings.json :
Aqui vamos precisar incluir dois pacotes no projeto:
- Microsoft.Extensions.Configuration;
- Microsoft.Extensions.Configuration.Json;
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration;namespace ConsoleEFCore6; public class AppDbContext : DbContext var connectionString = configuration.GetConnectionString(“DefaultConnection“); } |
Agora no arquivo Program basta definir o código abaixo para acessar a tabela Estudantes e exibir seus dados:
using ConsoleEFCore6;using var db = new AppDbContext();
Console.WriteLine(#8221;{db.Estudantes.Count()} registros no banco de dados “); Console.WriteLine(); foreach (var estudante in db.Estudantes) Console.ReadKey(); |
O resultado obtido pode ser visto a seguir:
Pegue o projeto aqui : ConsoleEFCore6.zip
E estamos conversados.