Çağdaş KARADEMİR
  • Blog Roadmap
  • 2020
    • EntityFramework Query Tagging
    • [HOTFIX] Npm Self Sertifika Hatasının Çözümü
    • Level101 — Ubuntu Sunucuya Docker Community Edition Kurulumu Nasıl Yapılır?
    • Level101 — Amazon Üzerinde Ubuntu Sunucu Nasıl Açılır?
    • [Lvl101] - Azure Üzerinde PostgreSql Kurulumu
  • 2019
    • [HOTFIX] Datagrip AutoComplete Not Working
    • Kubernetes Dashboard UI Kurulumu Nasıl Yapılır?
    • [HOTFIX] Git Self Sertifika Hatasının Çözümü
    • Node.js Son Versiyona Nasıl Yükseltebilirim?
    • MacOs Üzerine Docker Sql Server Nasıl Kurulur?
    • Asp.Net Core Api İle Graphql Projesi Oluşturmak
    • Reset Identity Seed After Deleting Records in SQL Server
    • Synchronous operations are disallowed.
    • Bootbox.js Nedir, Nasıl Kullanılır?
    • Less Secure Apps — Gmail Smtp Üzerinden Mail Gönderme Hatası
Powered by GitBook
On this page

Was this helpful?

  1. 2020

EntityFramework Query Tagging

PreviousBlog RoadmapNext[HOTFIX] Npm Self Sertifika Hatasının Çözümü

Last updated 4 years ago

Was this helpful?

EntityFramework Core 2.2 ile birlikte hayatımıza giren query tagging özelliğini size anlatmaya çalışacağım.

Özellikle EF ile yazılan uygulamalarda, karmaşık LINQ sorguları ile yazdığımız sql çıktılarının takibi, karmaşıklığı ve performans sorunlarını hepimiz biliyoruz. Bu gibi durumlarda çıktıları kontrol etmemiz, özellikle EF’nin oluşturduğu sorguların execution planlarını ve performans metriklerini takip etmemiz zor olabiliyor.

Alternatif Çözüm olarak APM ürünlerini kullanabilirsiniz.

Query Tagging, hem database yönetimi hem de log’lama sistemleri için sorgularımızı etiketleyerek, hızlıca erişebileceğimiz bir özelliktir.

Sorgularınızı yazarken; ne amaçla yapıldığını / yazıldığını belirten bir işaretleme (tagging) yapıyoruz.

Örneğin

  • GetFirst50Products — Product tablosunda ilk 50 kaydı getiren sorgu

  • GetAllUserRoles — Kullanıcı rollerinin tümünün çekildiği sorgu

Bunu yapabilmemiz için aşağıdaki gibi TagWith extension fonksiyonunu kullanabilirsiniz.

var first50Item = dataContext
    .Products
    .TagWith("Get First 50 Item")
    .OrderBy(p => p.CreateDate)
    .Take(50).ToList();

Sorgunun çıktısı ise bu şekilde olacaktır.

Sql Server üzerinde son çalıştırdığınız sql dizisine erişmek için aşağıdaki sorguyu kullanabilirsiniz.

SELECT deqs.last_execution_time AS [Time], dest.text AS [Query], dest.*
FROM sys.dm_exec_query_stats AS deqs
         CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where text like '%-- Get First 50 Item%'
ORDER BY deqs.last_execution_time DESC

İlgili yazının uygulanışına aşağıdaki linkten erişebilirsiniz.

GitHub - cagdaskarademir/efcore-query-tagging: Bu repository Entity Framework Core kullanarak query tagging örneği için yapılmıştır.GitHub
Logo