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.