top of page
  • Foto do escritorFábio Henrique

Migrations em um projeto separado

Talvez você queira armazenar suas migrações em um assembly diferente daquele que contém seu DbContext. Fazer isso é bem simples e deixa o seu projeto com uma organização melhor.


Crie um projeto do tipo WebApi e adicione duas ClassLibrary à ele como mostra a imagem abaixo.



A ClassLibrary MyWebApp.Data representa a camada de acesso à dados e o projeto MyWebApp.Migrations é o projeto onde os arquivos do Migration ficarão.


Dentro do projeto MyWebApp.Data crie duas classes Context.cs e DIExtensions.cs e adicione as seguinte referências via Nuget


Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools

Context.cs

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;

namespace MyWebApp.Data
{
 public class Context : DbContext
    {
 public Context(DbContextOptions<Contextoptions) : base(options)
        {
        }

 public DbSet<UsuarioUsuario { getset; }

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
 optionsBuilder
                           .UseSqlServer(
 @"Server=.;Database=Demo.QueryFilters;Trusted_Connection=True;ConnectRetryCount=0;");
        }
    }

    #region Entidade

 public class Usuario
    {
 public int Id { getset; }
 public string Nome { getset; }
 public bool IsDeleted { getset; }
    }

    #endregion
}

DIExtensions.cs

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

namespace MyWebApp.Data
{
 public static class DIExtensions
    {
 public static void AddRepository(this IServiceCollection services)
        {
 services.AddDbContext<Context>(o => o.UseSqlServer(
 @"Server=.;Database=Demo.QueryFilters;Trusted_Connection=True;ConnectRetryCount=0;",
 x => x.MigrationsAssembly("MyWebApp.Migrations")));
        }
    }
}


Vá ao projeto MyWebApp (API) e referencie as duas ClassLibray, criadas anteriormente, dentro dele. Feito isso adicione o seguinte código ao método ConfigureServices


services.AddRepository();

Seu código deverá ser semelhante ao da imagem abaixo



Ainda no projeto MyWebApp adicione a seguinte dll via Nuget


Microsoft.EntityFrameworkCore.Tools

Agora vá ao projeto MyWebApp.Migrations e adicione uma referência do projeto MyWebApp.Data isso é necessário pois os arquivos do Migration que serão gerados contém referências ao Contexto e as Entidades do modelo de dados


Por fim, execute o seguinte comando no terminal Package Manager Console, do VisualStudio, para gerar os arquivos do migration


Add-Migration NewMigration -Project MyWebApp.Migrations

Dicas


O pacote Microsoft.EntityFramework.Tools é o responsável por habilitar os comando do Migration


Ao invés de especificar no comando o projeto onde os arquivos do Migration devem ser gerados, você pode selecionar o projeto de destino na janela do Package Manager Console



Fazendo isso você precisará apenas do comando abaixo para gerar seus Migrations


Add-Migration NewMigration

69 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page