EF Core 2.0 - Scaffolding DbContext e Models usando CLI - I
Neste artigo veremos como usar as ferramentas para realizar o Scaffolding com Entity Framework Core 2.0 usando o Visual Studio Code. |
O Entity Framework Core 2.0 foi lançado em setembro de 2017 e trouxe melhorias significativas tornando-se uma opção robusta que você pode usar para ajudá-lo a configurar a sua camada de acesso a dados.
Na maioria dos casos você vai usar a abordagem Code-First, especialmente em novos projetos. No entanto existem muitos cenários nos quais já existe um banco de dados e você precisa usar a abordagem database first. Nestes casos você pode usar a ferramenta de Scaffolding e partindo do banco de dados e suas tabelas gerar o modelo de entidades e o contexto.
Neste artigo veremos como fazer isso usando o EF Core 2.0 e o Visual Studio Code.
Nota: Quando este artigo foi escrito as versões atuais do .NET Core SDK usado era a versão 2.0.3. A versão usada para as ferramentas foi a v 2.0.1. Para manter a compatibilidade entre os pacotes vou usar a versão 2.0.0 de cada pacote.
Recursos Usados:
Usando o EFCore Tools e a NET CLI para gerar o modelo de entidades
Antes de prosseguir vamos deixar claro que não vamos usar o Visual Studio e sim o Visual Studio Code e a ferramenta de linha de comando NET CLI.
Vamos criar o projeto usando a NET CLI e gerar o modelo de entidades usando o EFCore Tools.
Criando um projeto do tipo Console
Abra uma janela de comandos e crie uma pasta onde o projeto será hospedado.
No exemplo eu vou criar uma pasta chamada EFCoreModels : md EFCoreModels
A seguir entre na pasta criada : cd efcoremodels e crie o projeto do tipo console usando o comando : dotnet new console
Na imagem abaixo vemos o projeto criado na pasta efcoremodels:
Usando a ferramenta EFCore Tools para gerar o modelo de entidades
A ferramenta EF Core Tools vai permitir gerar o modelo de entidades a partir do banco de dados existente e ela atua no contexto da ferramenta dotnet CLI.
A primeira coisa a fazer e incluir no projeto os pacotes do Entity FrameworkCore usando o comando : dotnet add package Microsoft.EntityFrameworkCore -v 2.0.0
Como desejamos gerar o modelo de entidades a partir do banco de dados faremos a engenharia reversa usando o comando Scaffold DbContext e para isso temos que instalar também o pacote Microsoft.EntityFrameworkCore.Design.
Este pacote contém toda a lógica em tempo de projeto que é executada usando os comandos Add-Migration, dotnet ef, etc.
Para
poder executar os comandos dotnet ef precisamos instalar o pacote
Microsoft.EntityFrameworkCore.Tools.DotNet usando o comando :
dotnet add package Microsoft.EntityFrameworkCore.Tools.DotNet -v 2.0.0
Se você esta pensando que após fazer isso o processo foi concluido se enganou...
Você ainda vai ter que incluir uma referência ao pacote Microsoft.EntityFrameworkCore.Tools.DotNet no seu arquivo de projeto : efcoremodels.csproj para habilitar a integração com a ferramenta CLI.
Neste momento ao abrirmos o arquivo efcoremodels.csproj no Visual Studio Code veremos as referências aos pacotes incluídas conforme abaixo:
Inclua a referência conforme mostra a figura abaixo :
Agora com todos os pacotes e referências definidas no projeto podemos usar os recursos da EF Core Tools.
Vamos iniciar aplicando os recursos em um banco de dados SQL Server.
1- EF Core Tools com SQL Server
A
primeira coisa a fazer é instalar o provedor do SQL Sever :
dotnet add package
Microsoft.EntityFrameworkCore.SqlServer -v 2.0.0
Agora sim, digitando o comando : dotnet ef -h veremos o seguinte resultado indicando que temos os comandos disponíveis:
Gerando o modelo de entidades
Agora basta definir qual o banco de dados SQL Server a partir do qual desejamos gerar o modelo de entidades.
Como exemplo vou usar um banco de dados SQL Server chamado Escola.mdf contendo diversas tabelas conforme mostra a figura a seguir:
O comando usado para gerar o modelo de entidades a partir do banco de dados é :
dotnet ef dbcontext scaffold <string de conexão> Provider -o Models -f -c DemoDbContext
Onde :
dotnet ef dbcontext -
comando
<string de conexão> - a string de conexão
do banco de dados usado
Provider - o provedor do banco de
dados
-o Models - a pasta de sáida das classes
geradas
-f - sobrescreve um código anteriormente
gerado
-c DemoDbContext - o nome do DbContext
usado na aplicação
Então para o banco de dados Escola.mdf cuja string de conexão é : Data Source=MACORATTI;Initial Catalog=Escola;Integrated Security=True temos o seguinte comando:
dotnet ef dbcontext scaffold "Data Source=MACORATTI;Initial Catalog=Escola;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -f -c DemoDbContext
Antes de executar o comando acima vamos buildar o projeto e verificar se não existem erros:
dotnet build
Agora executando comando :
dotnet ef dbcontext scaffold "Data Source=MACORATTI;Initial Catalog=Escola;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -f -c DemoDbContext
Iremos obter o seguinte resultado no projeto exibido no VS Code:
Agora eu posso instanciar o DemoDbContext no aplicativo e começar a interagir com o banco de dados.
Pegue o projeto completo aqui: efcoremodels.zip
"(Disse Jesus) - Quem ama a sua vida
perdê-la-á, e quem neste mundo odeia a sua vida, guardá-la-á para a vida
eterna."
João 12:25
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Carregando dados dinamicamente com LINQ - Macoratti.net