Entity Framework Core 2.0 ve sonrası versiyonlar ile birlikte, veritabanı sorgulamalarda DbContext üzerinden yapılan model harici sql sorgulamaları kaldırılmıştır.
Mevcut durumda, Entity Framework üzerinden raw sql sorgulamalarını yapmak için genellikle bir model sınıfı tanımlanmalıdır. Yapılan sql sorguları, tanımlanan bu modele cast edilerek çalıştırılabilmektedir.
var result = context.Product.FromSql("SELECT * FROM PRODUCTS").ToList(); var result = await context.Product.FromSql("SELECT * FROM PRODUCTS").ToListAsync();
Ancak bu durum, raporlama işlemleri gibi karmaşık sorguların bulunduğu sql sorgularının mevcut entity framework nesnelerinden yapmak istediğimizde önümüze engel çıkarmaktadır. Üç veya dört tabloyu join ederek sorgulmalar yapmak isteyebiliriz. Ya da modelimiz dışında tablolardan raporlar çekmek isteyebiliriz.
Entity Framework Core ile çalışırken, raw sql komutlarının çalıştırılabildiği B3.Extensions.Data kütüphanesi GitHub üzerinden yayına açılmıştır. Örnek kullanımı aşağıdaki şekildedir:
public async Task<IActionResult> Get() { var sql = "SELECT type, SUM(length) FROM ways GROUP BY type"; var queryResult = await _context.ExecuteQueryAsync(sql); return Ok(response); }
Kütüphaneye NuGet üzerinden de ulaşabilirsiniz. Umarım kullanıcıların işlerini kolaylaştırır.
Bir sonraki yazıda görüşebilmek dileğiyle.