2011-05-04 30 views
5

ile bir aralık seçin Sayfalar listemizin performansını en üst düzeye çıkarmaya çalışırken bir sorunum var.Varlık Çerçevesi

Varlık çerçevesinin seçili bir deyim yapmasını, ancak yalnızca sonuç aralığını döndürmesini istiyorum (aralık = liste görünümünün bir sayfasının öğeleri).

Google'da arama yaptım, ancak bu konuda herhangi bir sonuç bulamadı. Ben sadece bir .ToList(). GetRange (indeksi, end endeksi başlatın) yapabileceğimi buldum, ancak sonra tüm öğeler bellekte yüklenecekti ve bunu önlemek istediğim şey budur ...

Birisi olabilir Bu yapılabilir mi söyle? (Saklanmış bir prosedürü kullanmak veya görüntülemek veya bir şey gibi görünmemek istiyorum çünkü bizim liste görünümü yeniden kullanılabilir ...)

Teşekkürler!

+1

Atla sıralı bir sorguyu (50) sökünüz (10) Size 50. başlayarak 10 ürün verecektir. –

cevap

13

Sen .Take(x).ToList()

düzenlemeyi kullanmak mümkün olmalıdır: üzgün, .Skip(startPosition).Take(numberOfItems).ToList()

+0

Teşekkürler, bu hile yapar :) –

1

denemek Ve tembel yükleme kullanmıyorsanız yüklemesini önlemek için filtreleri uygularken Yük() önce Sorgu() kullanmaya dikkat filtreler uygulayarak önce bütün koleksiyon:

context.Entry(blog) 
    .Collection(b => b.Posts) 
    .Query() 
    .Skip(startPosition) 
    .Take(numberOfItems) 
    .Load() 
    .ToList(); 

o navigasyon özelliği için tembel yükleme kapatmak için genellikle en iyisi Sorgu yöntemi kullanılarak. Aksi halde, tüm koleksiyon, süzülmüş sorgu yürütülmeden önce veya sonra tembel yükleme mekanizması tarafından otomatik olarak yüklenebilir. Daha fazla ayrıntı için

: http://msdn.microsoft.com/en-us/data/jj574232.aspx