Veja como configurar aplicações Console para usar o EF Core 6. |
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:
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:
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:
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($"{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.
"Deus tenha
misericórdia de nós e nos abençoe; e faça resplandecer o seu rosto sobre nós
(Selá.)
Para que se conheça na terra o teu caminho, e entre todas as nações a tua
salvação."
Salmos 67:1,2
Referências:
C# - Lendo e escrevendo em arquivos textos e binários
C# - Entendo o I/O na plataforma .NET
C# - Fluxo assíncrono ou async streams
C#- Apresentando Streams assíncronos