Scaffolding com Entity Framework Core para Dados Existentes

No ecossistema do Entity Framework Core, a abordagem Data base First, frequentemente chamada de Scaffolding, permite gerar modelos de código e classes de contexto a partir de um banco de dados já definido. Diferente do Code First, que prioriza a criação do banco via migrações, o Scaffolding é ideal quando o esquema do banco é gerenciado externamente, por exemplo, usando ferramentas gráficas como o SQLiteStudio, que oferecem uma interface intuitiva para design e manipulação de dados.

Para iniciar, crie um novo projeto em C# e adicione os pacotes NuGet necessários:

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Em seguida, instale as ferramentas globais do Entity Framework Core para comandos de terminal:

# Instalação das ferramentas EF Core
dotnet tool install --global dotnet-ef

# Atualização para a versão mais recente
dotnet tool update --global dotnet-ef

Configure a string de conexão no arquivo de configuração do projeto, especificando o provedor e a fonte de dados. Por exemplo:

{
  "DatabasePath": "Data Source=meubanco.db",
  "EfProvider": "Microsoft.EntityFrameworkCore.Sqlite"
}

Ao gerar o contexto e as entidades, utilize o comando de scaffolding ou plugins como o EntityFramework Core Scaffolding para facilitar o processso. Após a geração, é aconselhável criar classes parciais para manter código personalizado que não será sobrescrito em reganerações futuras. Por exemplo, se o contexto gerado for AppDbContext.cs, adicione um arquivo AppDbContext.Configuracao.cs para configurações adicionais:

using Microsoft.EntityFrameworkCore;
using System.IO;

public partial class AppDbContext : DbContext
{
    private string _connectionString;

    public AppDbContext()
    {
        var configPath = Path.Combine(Directory.GetCurrentDirectory(), "config.json");
        // Lógica para ler a string de conexão do arquivo
        _connectionString = "Data Source=meubanco.db";
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlite(_connectionString);
        }
    }
}

Antes de regenerar os arquivos, limpe manualmente os antigos para evitar conflitos, como arquivos com diferenças de caixa ou entidades obsoletas. Consulte a documentação oficial para detalhes sobre strings de conexão para SQLite.

Tags: Entity Framework Core sqlite C# .NET Scaffolding

Publicado em 6-20 18:25