2015-06-05 14 views
9

Linq to Entity'de, .AsExpandable() tam olarak ne yapar? Nerede ve neden kullanılır? Tüm ilgili varlıkları tembel yükleme için sorguya dahil ediyor mu?.Vsq'den Entity'e Varlık Koşulları

+2

'AsExpandable', yerleşik bir Ling funciotn değildir. [LinqKit] (http://www.albahari.com/nutshell/linqkit.aspx) adresinden uzantı yönteminden bahsediyorsanız, o zaman [blog] belgeselini (http://tomasp.net) okuyunuz. /blog/linq-expand.aspx/) temel alınmıştır. –

+0

Bir ton teşekkürler. Bu yardımcı oldu. –

cevap

9

"sorguda ilk nesne üzerinde AsExpandable çağırmanız gerekir neden. AsExpandable arayarak olduğunu çağırma ifadeleri işleyemez Varlık Framework sorgu işleme boru hattı, daha basit yapıları ile çağırma ifadeleri yerine LINQKit ifadesi ziyaretçi sınıfı etkinleştirmek Varlık Çerçevesi anlayabiliyor. " ~ Daha fazla bilgi için Josef Albahary

(a karşılık gelen temsilci tipi) bir İfade için bir yöntemdir grubundan bir kapalı dönüştürme bulunmaktadır author of LinqPad

1

okunan öneriyoruz. Bir yöntem grubundan eşleşen bir imzanın temsilcisine örtülü bir dönüşüm var. Bu nedenle sadece IEnumerable aşırı yük eşleşir.

Elbette, bu lambda kullanmanız gerektiğini söylemez. Sadece şunu yazın:

ctx.Set(). AsExpandable(). Where (ByName); Bir ifadeyi ilettiğinizden (ByName, her şeyden önce, Queryable.Where'in gerektirdiği bir ifade zaten var), bu, nesneler için linq değil, bir sorgu olarak değerlendirecektir.

İlgili konular