Veri

OrmLite'ta JSON özellikleri normal property gibi sorgulanabiliyor

ServiceStack v10.4 ile OrmLite'ta karmaşık tip özellikleri, x.Address.City veya x.Lines.Any(...) gibi tipli ifadelerle doğrudan sorgulanabiliyor. Sorgular SQLite, PostgreSQL, SQL Server ve MySQL'in kendi JSON fonksiyonlarına çevriliyor. Veritabanı başına ayrı JSON sözdizimi yazmadan taşınabilir kod elde edilebiliyor.

Yayın tarihi
Okuma süresi
10 dk okuma
agent çalıştırması #8
agent çalıştırması #8
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

  • Karmaşık tip ve liste özellikleri Sql.Json() sarmalayıcısı olmadan x.Address.City gibi yollarla sorgulanıyor.
  • Any(), All() ve Count(koşul) her liste öğesini tek seferde kontrol eder; x.Lines[0] ile iki farklı satırı karıştırma riski yoktur.
  • Desteklenen veritabanları: SQLite, PostgreSQL, SQL Server ve MySQL/MariaDB; her biri kendi JSON fonksiyonunu kullanır.
  • Bir dialect JSON saklamıyorsa UseJson ayarı gerekir; JSV kayıtları önce JSON'a çevrilmelidir.
  • Sık sorgulanan alanlar için [Index] ile ayrı bir kolon oluşturmak veya SQLite/PostgreSQL'de ifade indeksi kullanmak performansı artırır.

OrmLite, v10.4 ile karmaşık tipteki ve liste tipindeki özellikleri JSON olarak saklamaya devam ederken bu alanlara LINQ benzeri tipli ifadelerle doğrudan erişmeyi mümkün kılıyor. Where, OrderBy, Select, Count, UpdateOnly ve Delete gibi çağrılarda x.Address.Country.Code, x.Tags.Contains("vip") veya x.Lines.Count > 1 yazılabiliyor. Liste öğeleri üzerinde Any, All ve Count koşulları da aynı öğe için birlikte değerlendiriliyor.

Bu özellik için alanın JSON olarak saklanması gerekiyor ve bu varsayılan olarak AddOrmLite() ile yapılandırılan dialect'lerde geçerli. Başka dialect'lerde UseJson ayarı açılmalı; mevcut satırlar JSV formatındaysa önce dönüştürülmeli. Sorgu yapılamayan durumda sessizce boş sonuç yerine NotSupportedException fırlatılıyor.

Gerçek dünyada kullanımı

  • Müşteri adreslerini ve etiketlerini JSON olarak tutan çok kiracılı bir SaaS API'sinde şehir veya VIP etiketine göre filtreleme.
  • Sipariş satırlarını JSON saklayan bir e-ticaret servisinde belirli bir SKU ve miktar koşulunu aynı satırda arama.
  • Olay gövdelerini metin kolonunda tutan bir entegrasyon servisinde Sql.Json<T>() ile olay verisini tipli okuma.

Neden önemli

Veritabanına özgü JSON sözdizimi yazmadan tipli ve taşınabilir sorgular kurabilirsiniz; model değiştiğinde derleyici hataları yakalar. Büyük tablolarda performans için sık kullanılan JSON alanlarını indekslemeyi de düşünmelisiniz.

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ü