Introdução ao Entity Framework Core

Resumo : neste tutorial, você começará a usar o Entity Framework Core e aprenderá como configurar um projeto do Entity Framework Core.

Criando um projeto EF Core

Primeiro, crie um novo projeto de aplicativo de console chamado HR.

Segundo, instale dois pacotes NuGet:

  • Microsoft.EntityFrameworkCore.SqlServer – este pacote é o provedor de banco de dados Microsoft SQL Server para Entity Framework Core que permite trabalhar com SQL Server.
  • Microsoft.EntityFrameworkCore.Tools – este pacote contém as ferramentas necessárias para trabalhar com EF Core, como comandos de migração.

Definindo modelos

Primeiro, crie uma Departmentclasse que represente os departamentos do sistema de RH:

namespace HR;

public class Department
{
    public int Id { get; set; }
    public string Name {get; set; }
}
Linguagem de código:  C#  ( cs )

Segundo, crie uma Employeeclasse que represente os funcionários no sistema de RH:

namespace HR;


public class Employee
{
    public int Id { get; set; }
    public required string FirstName {  get; set; }
    public required string LastName {  get; set; }
    public required DateTime JoinedDate { get; set; }
    public required decimal Salary { get; set; }
    public Department? Department {  get; set; }
}
Linguagem de código:  C#  ( cs )

A Employeeclasse tem cinco propriedades, incluindo , Id, FirstName, , e . A propriedade faz referência à classe.LastNameJoinedDateSalaryDepartmentDepartmentDepartment

Criando classe DbContext

Primeiro, crie um novo arquivo chamado appsettings.jsonno projeto. Ele appsettings.jsonconterá uma string de conexão para um banco de dados local do SQL Server que vem com o Visual Studio por padrão:

{
  "ConnectionStrings": {
    "Local": "Data Source=(localdb)\\MSSQLLocalDB; Initial Catalog=HR"
  }
}Linguagem de código:  texto simples  ( texto simples )

Em segundo lugar, defina Copiar para saída do appsettings.jsonarquivo como Copiar se for mais recente , para que o Visual Studio copie appsettings.json para o diretório de saída sempre que você alterar as configurações.

Terceiro, crie uma HRContextclasse que estenda a DbContextclasse:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace HR;

public class HRContext: DbContext
{
    public DbSet<Employee> Employees { get; set;}
    public DbSet<Department> Departments{  get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {

        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();

        var connectionString = configuration.GetConnectionString("Local");

        optionsBuilder.UseSqlServer(connectionString);
    }
}Linguagem de código:  C#  ( cs )

Na HRContextaula:

  • Defina dois DbSetincluindo Employeese Departments.
  • Substituindo o OnConfiguring()método da DbContextclasse. Dentro do método, pegue a string de conexão e passe-a para o UseSqlServer()método do DbContextOptionsBuilderobjeto.

Criando uma migração e sincronizando-a com o banco de dados

Primeiro, abra o Package Manager Console (PMC) e use o Add-Migrationcomando para criar uma nova migração:

Add-Migration InitialLinguagem de código:  texto simples  ( texto simples )

Ele produzirá o seguinte:

Build started...
Build succeeded.
To undo this action, use Remove-Migration.Linguagem de código:  texto simples  ( texto simples )

Se você observar o projeto, verá um novo diretório chamado Migrations, que contém dois arquivos:

  • 20230608032229_Initial.cs– contém os métodos Up() e Down(). O método Up() cria os Funcionários e Departamentos enquanto o método Down() os elimina. O nome do arquivo começa com um carimbo de data/hora, seguido por um sublinhado (_) e o nome da migração.
  • HRContextModelSnapshot.cs– representa o estado atual do modelo de banco de dados. O EF Core usa as informações desse arquivo para gerar as instruções SQL apropriadas para atualizar o esquema do banco de dados.

Segundo, execute o Update-Databasecomando no PMC para aplicar a migração ao banco de dados:

Update-Database

Saída:

Build started...
Build succeeded.
Applying migration '20230608032229_Initial'.
Done.Linguagem de código:  texto simples  ( texto simples )

O Update-Databasecomando cria um novo banco de dados caso ainda não tenha sido criado e aplica as alterações especificadas na 20230608032229_Initial.csmigração para o banco de dados.

Neste exemplo, ele cria três tabelas:

  • __EFMigrationsHistory – armazena o histórico de migração.
  • Departments – mapeia para a  Department classe do modelo.
  • Employees – mapeia para a  Employee classe do modelo.

Ao exibir o banco de dados local do SQL Server, você verá o novo banco de dados e as tabelas criadas:

Tabelas de banco de dados principais do EF

Adicionando dados à tabela Departamentos

Para adicionar uma ou mais linhas à Departmentstabela, você cria novos Departmentobjetos, adiciona-os ao DepartmentsDbSet da HRContextclasse e chama o SaveChanges()método.

Modifique o Program.csprograma para inserir três linhas na Departmentstabela usando o seguinte código:

using HR;

InsertDepartments();

static void InsertDepartments()
{
    var departments = new List<Department>()
    {
        new Department {Name="Sales" },
        new Department {Name="Marketing" },
        new Department {Name="Logistics"},
    };

    using var context = new HRContext();

    foreach (var department in departments)
    {
        context.Departments.Add(department);
    }

    context.SaveChanges();
}

Linguagem de código:  C#  ( cs )

Se você executar o programa e visualizar os dados da Departmentstabela, verá que o EF Core inseriu três linhas na Departmentstabela:

Consultando dados da tabela Departamentos

O programa a seguir obtém todos os dados da Departmentstabela e exibe o Ide Namede cada departamento no Console:

using HR;

SelectDepartments();


static void SelectDepartments()
{
    using var context = new HRContext();
    var departments = context.Departments.ToList();

    foreach (var department in departments)
    {
        Console.WriteLine($"{department.Id} - {department.Name}");
    }
}Linguagem de código:  C#  ( cs )

Saída:

1 - Sales
2 - Marketing
3 - LogisticsLinguagem de código:  texto simples  ( texto simples )

Como funciona.

Primeiro, crie um novo HRContextobjeto para conectar-se ao banco de dados.

Segundo, chame o ToList()método DbSet Departmente atribua o resultado à departmentsvariável.

Terceiro, repita os departamentos e exiba seu ID e nome no console.

Instalando as ferramentas elétricas EF Core

O EF Core Power Tools é uma ferramenta poderosa que ajuda você a economizar tempo ao trabalhar com o Entity Framework Core. Usaremos as ferramentas avançadas do EF Core para visualizar dados de entidade neste tutorial.

Aqui estão as etapas para instalar o EF Core Power Tools:

  • Primeiro, selecione Extensões > Gerenciar extensões no Visual Studio.
  • Em segundo lugar, pesquise EF Core Power Tools na caixa de pesquisa.
  • Terceiro, clique no botão Download para fazer o download e instalá-lo.

Para visualizar os dados da entidade no projeto de RH, você pode clicar com o botão direito do mouse no projeto de RH e selecionar EF Core Power Tools > Add DbContext Diagram .

O Visual Studio reconstruirá o projeto e exibirá um diagrama da seguinte forma:

O diagrama ilustra as entidades Employeee Departmentseu relacionamento. Também mostra as propriedades de cada entidade em detalhes.

Resumo

  • Instale Microsoft.EntityFrameworkCore.SqlServer e Microsoft.EntityFrameworkCore.Tools no projeto EF Core e use o EF Core Power Tool para facilitar o trabalho com o Entity Framework Core.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *