Query Types können ab EF Core 2.1 verwendet werden, um das Ergebnis einer SQL-Abfrage in POCO Klassen zu laden. Diese Klassen sind keine Entitäten und können somit nicht mit EF Funktionen in der Datenbank aktualisiert oder gelöscht werden.

Query Types können auf 2 Arten definiert und angewendet werden.

Variante 1: Deklaration im eigenen (von DbContext abgeleiteten) Datenbankkontext und SQL-Abfrage.

public DbQuery MyCustomType{ get; set; }
var data = ctx.MyCustomType
  .FromSql("SELECT Value1, Value2 FROM MyCustomTable");

Variante 2: Definition in der OnModelCreating Methode des eigenen (von DbContext abgeleiteten) Datenbankkontext und SQL-Abfrage.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Query();
}
var data = ctx.Query<MyCustomType>()
  .FromSql("SELECT Value1, Value2 FROM MyCustomTable");