NoSQL için Azure Cosmos DB'de LINQ to NoSQL çevirisi
Makale
UYGULANANLAR: NoSQL
Azure Cosmos DB sorgu sağlayıcısı, LINQ sorgusundan NoSQL için Azure Cosmos DB sorgusuna en iyi şekilde eşleme gerçekleştirir. LINQ'den çevrilen NoSQL sorgusunu almak istiyorsanız, oluşturulan IQueryable nesnede yöntemini kullanınToString(). Aşağıdaki açıklama LINQ ile ilgili temel bir bilgi olduğunu varsayar. LINQ'e ek olarak Azure Cosmos DB, NoSQL için API ile çalışan Entity Framework Core'ı da destekler.
Sayısal ve Boole değerleri üzerindeki yaygın aritmetik ifadeler de dahil olmak üzere aritmetik ifadeler.
C#
2 * family.children[0].grade;
x + y;
Bir dize değerini sabit bir dize değeriyle karşılaştırmayı içeren dize karşılaştırma ifadeleri.
C#
mother.familyName.StringEquals("Wakefield");
C#
string s = "Rob";
string e = "in";
string c = "obi";
child.givenName.StartsWith(s);
child.givenName.EndsWith(e);
child.givenName.Contains(c);
Bileşik değer türünde veya anonim türde bir nesne ya da bu tür nesnelerin dizisini döndüren nesne/dizi oluşturma ifadeleri. Bu değerleri iç içe yerleştirebilirsiniz.
C#
new Parent { familyName = "Wakefield", givenName = "Robin" };
new { first = 1, second = 2 }; //an anonymous type with two fields newint[] { 3, child.grade, 5 };
LINQ kullanma
ile GetItemLinqQueryablebir LINQ sorgusu oluşturabilirsiniz. Bu örnekte LINQ sorgu oluşturma ve ile zaman uyumsuz yürütme gösterilmektedir FeedIterator:
NoSQL .NET SDK'sı ile birlikte gelen LINQ sağlayıcısı aşağıdaki işleçleri destekler:
Seç: Projeksiyonlar nesne oluşturma dahil olmak üzere SELECT'e çevrilir.
Nerede: Filtreler WHERE'a çevrilir ve , ||ve ! NoSQL işleçleri arasında &&çeviriyi destekler
SelectMany: DIZIlerin JOIN yan tümcesine geri sarmasını sağlar. Dizi öğelerine filtre uygulamak için ifadeleri zincirleme veya iç içe yerleştirme için kullanın.
OrderBy ve OrderByDescending: ASC veya DESC ile ORDER BY'a çevirin.
Toplama için Count, Sum, Min, Max ve Average işleçleri ve bunların zaman uyumsuz eşdeğerleri CountAsync, SumAsync, MinAsync, MaxAsync ve AverageAsync.
CompareTo: Aralık karşılaştırmalarına çevirir. Bu işleç, .NET'te karşılaştırılmadığından genellikle dizeler için kullanılır.
Atla ve Al: Sorgudan gelen sonuçları sınırlamak ve sayfalandırma yapmak için OFFSET ve LIMIT'e çevirir.
Matematik işlevleri: .NET Abs, , Acos, Asin, Atan, Ceiling, , Cos, , Exp, , Floor, Log10SignLogSqrtTanSinPowRoundve Truncate eşdeğer yerleşik matematik işlevlerine çeviriyi destekler.
SELECT *
FROM Families f
WHERE f.parents[0].familyName = "Wakefield"
Where işleci, örnek 2:
LINQ lambda ifadesi
C#
input.Where(
family => family.parents[0].familyName == "Wakefield" &&
family.children[0].grade < 3);
NoSQL
NoSQL
SELECT *
FROM Families f
WHERE f.parents[0].familyName = "Wakefield"AND f.children[0].grade < 3
Bileşik NoSQL sorguları
Daha güçlü sorgular oluşturmak için önceki işleçleri oluşturabilirsiniz. Azure Cosmos DB iç içe kapsayıcıları desteklediğinden, bileşimi birleştirebilir veya iç içe yerleştirebilirsiniz.
Bitiştirme
Söz dizimi input(.|.SelectMany())(.Select()|.Where())* şeklindedir. Birleştirilmiş sorgu isteğe bağlı SelectMany bir sorguyla başlayabilir ve ardından birden çok Select veya Where işleç gelebilir.
SELECT *
FROM p IN Families.parents
WHERE p.familyName = "Wakefield"
Iç içe
Söz dizimi , veya işlecinin olduğu yerdirinput.SelectMany(x=>x.Q()).QSelectSelectManyWhere
İç içe yerleştirilmiş sorgu, iç sorguyu dış kapsayıcının her öğesine uygular. Önemli bir özellik, iç sorgunun kendi kendine birleştirme gibi dış kapsayıcıdaki öğelerin alanlarına başvurabilmesidir.
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.