SQL View + EF Core

Trabalhando com SQL Views no Entity Framework Core

Compartilhe nas redes sociais

Existem varias maneiras de usar Views SQL com o Entity Framework Core, mas, o que diferencia uma da outra é a versão que você está usando do framework.

Esse post parte do pressuposto de que você já sabe configurar e usar o ef core em sua aplicação. Então, vamos lá!

Independente de versão

Crie a classe que representará cada registro da sua View:

public class MyView {
    public string Name {get; set;}
    public string Email {get; set;}
}

Agora vem a parte que varia de versão pra versão.

Versões anteriores a EF CORE 3

Adicione um atributo do tipo DbQuery na sua classe que herda de DbContext:

public partial class MyDbContext : DbContext {
    //...
    public virtual DbQuery<MyView> YourView { get; set; }
    //...
}

Configure o método OnModelCreating como abaixo:

public partial class MyDbContext : DbContext {
    //...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //...
        modelBuilder.Query<MyView>().ToView("nameOfMyViewOnDatabase");
        //...
    }
}

Versões a partir da EF Core 3

Adicione um atributo do tipo DbSet na sua classe que herda de DbContext:

public partial class MyDbContext : DbContext {
    //...
    public virtual DbSet<MyView> YourView { get; set; }
    //...
}

Configure o método OnModelCreating como abaixo:

public partial class MyDbContext : DbContext {
    //...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //...
        modelBuilder
            .Entity(e =>
            {
                e.HasNoKey();
                e.ToView("nameOfMyViewOnDatabase");
            });
        //...
    }
}

Fácil! Mas, e agora como uso a view?

Do jeito convencional:

var results = _context.YourView.ToList();

E aí, te ajudei?