Diğer

OrmLite v10.4: recursive, pencere ve birleşik sorgular tipli API ile geliyor

ServiceStack v10.4, OrmLite'a hiyerarşik sorgular için WithRecursive(), adlandırılmış alt sorgular için With(), pencere fonksiyonları, Union/Intersect/Except ve SeekAfter ile keyset sayfalama ekliyor. Elle yazılan SQL metinlerine gerek kalmadan bu sorgular tipli, parametreli ve veritabanları arasında taşınabilir kalıyor. Yazıda her özelliğin kullanım örnekleri ve üretilen SQL'i yer alıyor.

Yayın tarihi
Okuma süresi
11 dk okuma
agent çalıştırması #7
agent çalıştırması #7
Orijinale git servicestack.net

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • WithRecursive(seed, recurse) ile hiyerarşileri tek sorguda gezin; maxDepth ve detectCycles döngülü veriyi de kapsar
  • With<T>() ile alt sorguyu bir sınıfa bağlayıp birden fazla yerde tipli olarak kullanın
  • TopPerGroup(x => x.Customer, take: 3) müşteri başına son 3 siparişi tek ifadeyle getirir
  • Union, Intersect ve Except sorgu parametrelerini otomatik birleştirir; Firebird INTERSECT ve EXCEPT desteklemez
  • SeekAfter() sıralamanın son sütununa benzersiz bir alan (ör. Id) koyulmasını gerektirir
  • SelectLazyAsync() ile büyük sonuçları await foreach ile akıtın; döngüden çıkınca okuyucu kapanır

ServiceStack v10.4 ile OrmLite, genelde elle yazılan SQL'e ihtiyaç duyulan sorgular için tipli API'ler sunuyor. Kategori ağaçları gibi hiyerarşileri gezmek için WithRecursive(), bir alt sorguyu ortak tablo ifadesi (CTE) olarak adlandırmak için With(), sıralama ve kümülatif toplam gibi hesaplar için pencere fonksiyonları ve grup başına ilk N satır için TopPerGroup() eklendi. Union, Intersect ve Except ile sorgular birleştirilebiliyor, SeekAfter() ise sayfalamayı imleç mantığıyla yapıyor.

Bu özellikler filtre, join ve sıralama ile birlikte çalışıyor ve PostgreSQL, SQL Server, SQLite 3.25+, MySQL 8+, MariaDB ve Oracle üzerinde destekleniyor. Büyük sonuçlar için SelectLazyAsync() satırları tek tek akıştırıyor. Yazıda derinlik sınırı, döngü tespiti ve Firebird'de INTERSECT ve EXCEPT desteğinin olmadığı gibi sınırlamalar da anlatılıyor. Ayrıntılar ve üretilen SQL için orijinal yazıya bakmanız yeterli.

Gerçek dünyada kullanımı

  • Kategori veya organizasyon şemasını ağaç olarak gezen bir ASP.NET Core API
  • Müşteri başına son siparişleri veya grup bazlı en yüksek kayıtları listeleyen raporlama ekranı
  • Sonsuz kaydırma ya da senkronizasyon endpoint'i için derin sayfalara hızlı erişim sağlayan keyset sayfalama
  • Büyük bir tabloyu bellek tüketmeden dışa aktaran arka plan işçisi

Neden önemli

Hiyerarşi, pencere fonksiyonu ve keyset sayfalama gibi karmaşık sorgular artık tipli kalıyor; veritabanı değiştiğinde SQL metinlerini yeniden yazmak gerekmiyor. Yine de her özelliğin desteklendiği veritabanını ve üretilen SQL'i kendi projenizde kontrol etmeniz iyi olur.

Bu özet, ServiceStack Blog üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü