Framework

28 fev, 2023

EF Core 6: configurando uma aplicação Console

Publicidade

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:

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:

  • 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
{
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
var connectionString = “Server=meuservidor;Database=CadastroDB;Integrated Security=True”;
builder.UseSqlServer(connectionString);

    }
}

2- Acessando a string de conexão a partir do arquivo appsettings.json :

Aqui vamos precisar incluir dois pacotes no projeto:

  1. Microsoft.Extensions.Configuration;
  2. Microsoft.Extensions.Configuration.Json;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace ConsoleEFCore6;

public class AppDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(“appsettings.json“)
.Build();

        var connectionString = configuration.GetConnectionString(“DefaultConnection“);
builder.UseSqlServer(connectionString);

    }
}

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();
Console.WriteLine(“Todos os registros no banco de dados:”);

foreach (var estudante in db.Estudantes)
{
Console.WriteLine(#8221; – {estudante.Nome} – {estudante.Idade} anos”);
}

Console.ReadKey();

O resultado obtido pode ser visto a seguir:

Pegue o projeto aqui :  ConsoleEFCore6.zip

E estamos conversados.