2011-02-11 24 views
5

Özel gereksinimlerimizi karşılayıp karşılamayacağını görmek için Varlık Çerçevesini araştırıyoruz. İşte ilgilendiğim senaryo:Varlık Framework projeksiyonları

Çok sayıda sütuna sahip büyük bir tablomuz var (buna VeryWideRecord diyelim) ve buna karşılık gelen bir iş nesnesi var (buna da VeryWideRecord denir). Veritabanımı bir VeryWideRecord iş nesnesi için sorgulamak istiyorum, ancak yalnızca temel SQL tarafından döndürülen belirli sütunlar için değerlere sahip olmak istiyorum. Bunu Entity Framework ile yapabilir miyim?

Bu durum, Entity Framework'ün tablo bölme özelliği ile yapılıp yapılamayacağından emin değilim, çünkü uygulamanın istenen çalışma sütunlarını değiştirmesi gerekiyordu (çalışma zamanında). Bunun nedeni, tele karşı gelen bilgi miktarını en aza indirmeye çalışıyoruz.

Bunun, NHibernate (example) kullanılarak nasıl yapılabildiğini görüyorum, ancak bunu Entity Framework ile nasıl yapabilirim?

cevap

0

şey (: Aşağıdaki bağlantıdır. Bazı compiletime kontrol var Bununla

Dim pl As New List(Of VeryWideRecord)(
    (From p In db.VeryWideRecords 
     Select New With {.RecID = p.RecID} 
    ).ToList().Select(
     Function(r) 
     Return New VeryWideRecord With {.RecID = r.RecID} 
     End Function)) 

Ama gerçekten dinamik bunu yapmak istiyorsanız, eSQL olduğunu belki de daha uygun Ve aynı zamanda, gerçekte bu Entity Framework değil, hile yapan lambda ifadesi

+0

yaptığınız gibi itiraz, ancak soru istenen sütunların çalışma zamanında belirleneceğini, zaman derlenmeyeceğini belirtti. Ayrıca, FYI, siz proejction çalışmasını yapabilirsiniz, sadece ToList() 'i çağırmak istemezsiniz ve projeksiyon anonim bir tür döndürmelidir. EF tarafından ele alınan bir projeksiyonda yapabileceğiniz şeylere sınırlamaların olduğu belirtilmelidir (genellikle projeksiyon içindeki işlevleri arayamazsınız). EF ile projeksiyon yapılıyorsa, 'AsLnumerable()' kullanarak 'ToList()' –

+0

kabul edilirse, AsEnumerable() daha iyi olurdu, ama oluşturmak için lambda kısmının gösterilmesi daha iyi bir örnek olurdu. kayıt. Anynomous tipine dönerken, istemediği şey buydu. – MarcelDevG