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");