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?