2015-05-18 14 views
8

http://services.odata.org/V4/Northwind/Northwind.svc/OData - Bütün <code>Customers</code>, almaya çalışıyorum

seçip $ genişletmek $ iç içe onların Orders ve bir kerede Order_Details gelen ve bunun için iç içe geçmiş $expand kullanarak. Aşağıdaki bağlantıyı kullanıyorum verileri sorgulamak için: $select kullanarak verileri sınırlamak için çalışıyorum şimdi http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$expand=Orders($expand=Order_Details) . Sorun şu ki, ortadaki tablo için $select'u kullanmak için uygun sözdizimini bulamıyorum - Orders. Customers ve alt bire - - Sadece üst tabloya uygulayabilirsiniz böyle Order_Details:

http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$select=CustomerID&$expand=Orders($expand=Order_Details($select=UnitPrice))

o Orders için benim durumumda, aradaki tablolar için de seçmek $ kullanmak mümkün mü?

+0

gerçekten iç içe nesneler olarak bu verileri almak gerekir mi? Deneyimden çoğu durumda, ** bir nesne ağacının toplanmış bir görüntüsüne ihtiyacımız olduğunu buldum **. Ben ODIN protokolü kullanarak bu tür bir hizmeti queryable inşa etmek için LINQ uzantısı yöntemi 'QueryByCube' geliştirdi. Daha fazla bilgiyi buradan okuyun: [AdaptiveLINQ] (http://www.adaptivelinq.com). – nlips

+0

@nlips LINQ kullanamıyorum, hala .NET 2.0 ile sınırlıyız. Bana birleştirilmiş görünümün bir örneğini verebilir misiniz? Temel olarak tüm bu verileri mümkün olduğunca az web isteği ile almayı deniyorum – VladL

+0

Örneğin Northwind.svc kullanımının olduğunu varsaydım. Sanırım kendi OData servislerinizi geliştirecek ve LINQ sunucu tarafını kullanacaksınız. İlişkilendirilmiş görünümün fikri, her alanın yerel varlık modelindeki bir ifade tarafından oluşturulduğu bir varlık kümesi sunmaktır. ** Bazı alanlar birkaç öğenin bir araya getirilmesi olarak ifade edilir **. Örneğin, sadece müşteri başına _total satışlarını şu tarihe kadar alabiliriz: 'MyService.svc? $ Select = CustomerID, OrderDate, TotalSales'. – nlips

cevap

8

Onun yorumu için @nlips teşekkürler.

Sadece seçme ayırarak orta tablo için $select kullanabilir ve noktalı virgül ile genişletmek mümkündür:

http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$select=CustomerID&$expand=Orders($select=OrderID;$expand=Order_Details($select=UnitPrice))

+3

Kutsal guacamole bir noktalı virgül ... Bunun üzerine boşa harcanan saatler. Bazı kaynak dokümanları paylaşmak ister misiniz? – Jerther

+1

@Jerther, gördüğünüz gibi, kendi sorumu yanıtladım. Bunun için saatlerce harcadım ve sadece kaza ile çözüme geldim. Şu andan emin değilim, ama şu an yazdığımda resmi belgeleri bulamadım. – VladL

+1

Bundan bahsediliyor, ama örnek yok. Noktalı virgül, tüm belgede yalnızca bir kez görünür: http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html – Jerther

İlgili konular