NAVIGATE (Entity SQL)
Varlıklar arasında kurulan ilişkide gezinilir.
Söz dizimi
navigate(instance-expression, [relationship-type], [to-end [, from-end] ])
Bağımsız değişkenler
instance-expression
Bir varlığın örneği.
relationship-type
Kavramsal şema tanım dili (CSDL) dosyasından ilişkinin tür adı. relationship-type
ad alanı> olarak <nitelenmiş.<ilişki türü adı>.
to
İlişkinin sonu.
from
İlişkinin başlangıcı.
Dönüş Değeri
Bitiş değerinin kardinalitesi 1 ise, dönüş değeri olur Ref<T>
. Bitiş değerinin kardinalitesi n ise, dönüş değeri olur Collection<Ref<T>>
.
Açıklamalar
İlişkiler, Varlık Veri Modeli'ndeki (EDM) birinci sınıf yapılardır. İki veya daha fazla varlık türü arasında ilişkiler kurulabilir ve kullanıcılar bir uçtan (varlık) diğerine ilişkinin üzerinde gezinebilir. from
ve to
ilişki içinde ad çözümlemesinde belirsizlik olmadığında koşullu olarak isteğe bağlıdır.
NAVIGATE, O ve C alanında geçerlidir.
Gezinti yapısının genel biçimi aşağıdaki gibidir:
navigate(instance-expression
, relationship-type
, [ to-end
[, from-end
] ] )
Örneğin:
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
Burada OrderCustomer , ve Müşteri ve Sipariş, ilişkinin to-end
(müşteri) ve from-end
(sipariş) öğesidirrelationship
. OrderCustomer bir n:1 ilişkisiyse, gezinme ifadesinin sonuç türü Baş<Müşteri'dir>.
Bu ifadenin daha basit biçimi aşağıdaki gibidir:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
Benzer şekilde, aşağıdaki formdaki bir sorguda navigate ifadesi bir Koleksiyon<Başvuru<Sırası>> oluşturur.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
Örnek-ifade bir varlık/başvuru türü olmalıdır.
Örnek
Aşağıdaki Entity SQL sorgusu, Address ve SalesOrderHeader varlık türleri arasında kurulan ilişkide gezinmek için NAVIGATE işlecini kullanır. Sorgu AdventureWorks Satış Modeli'ni temel alır. Bu sorguyu derlemek ve çalıştırmak için şu adımları izleyin:
Nasıl yapılır: StructuralType Sonuçları Döndüren Bir Sorgu Yürütme bölümündeki yordamı izleyin.
Aşağıdaki sorguyu yöntemine
ExecuteStructuralTypeQuery
bağımsız değişken olarak geçirin:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address