Blog girişi, yüzlerce girişe sahip bir BlogEntries koleksiyonuna sahipse, önce EF koduyla herhangi bir sunucu tarafı sayfalama işlevi eklemenin bir yolu var mı? Örneğin, bir DbSet üzerinde yaptığınız gibi tipik bir .Skip (x) .Take (y) yaparsam, tüm koleksiyonu yükler ve belleğe sığdırır mı?Varlık çerçeve kodunda ilk önce gezinme koleksiyonlarına sayfalama eklemek için bir yol var mı?
7
A
cevap
14
Doğrudan DbSet
sorgusu yaparsanız, Take and Skip'i kullanabilirsiniz ve gerçekten veritabanı sunucusundaki çağrıları yürütür (bu yöntem çağrıları SQL'e çevrilir). Yani bu beklendiği gibi çalışır: Eğer açık yükleme
var blog = context.Blogs.First();
// Lazy loading always loads all related entries and executes ordering and
// paging through Linq-to-objects!
var entires = blog.BlogEntries.OrderBy(e => e.Date).Skip(10).Take(10);
:
// Loads only 10 expected entries through Linq-to-entities
var entries = context.BlogEntries.OrderBy(e => e.Date).Skip(10).Take(10);
bu şekilde çalışmıyor yüklü bir varlık o çağrı navigasyon özelliklerini dikkat
var blog = context.Blogs.First();
var dbEntry = context.Entry(blog);
// This is the way to use Linq-to-entities on navigation property and
// load only subset of related entities
var entries = dbEntry.Collection(b => b.BlogEntries)
.Query()
.OrderBy(e => e.Date)
.Skip(10)
.Take(10)
.Load();
İlgili konular
- 1. Varlık Çerçeve Kodu İlk
- 2. İlk önce varlık çerçeve modelindeki izlemeyi kapatın
- 3. Varlık çerçeve kodunda birçok ilişkiye eşleme ilk olarak
- 4. Varlık Çerçeve Kodunda Tablo Öneki Nasıl Eklenir?
- 5. Varlık çerçeve kodu ilk önce "discriminator" sütunu oluşturur
- 6. Varlık Çerçeve Kodu İlk tembel yükleme gezinme özellikleri
- 7. Varlık Çerçeve Kodu ile Npgsql entegrasyonu İlk
- 8. Varlık Çerçeve modelinin gezinme özelliklerini DTO'lara çevirme
- 9. Varlık Çerçeve Kodu İlk: SaveChanges atomik değil
- 10. Varlık Çerçeve Kodu İlk MySql Çoğullama Tabloları
- 11. Varlık Çerçeve Kodu İlk ve Veritabanı İlk Hata/Çakışma
- 12. Şema bağımsız Varlık Çerçeve Kodu İlk Geçişler
- 13. Çerçeve boyutu gezinme çubuğunun altında mı?
- 14. Membership Kullanıcı ve Varlık Çerçeve Kodu İlk
- 15. Varlık Çerçeve Kodu İlk Salt Okunur Tuşu
- 16. İlk önce Varlık Çerçeve Kodunda geçerli ilkel özellikler nelerdir? Benim modeli sınıfında bir karakter veri türüne sütun eşlemek çalıştığınızda
- 17. Ben Varlık Çerçeve 5 Kod İlk kullanıyorum
- 18. Varlık çerçeve kodu ilk boş anahtar
- 19. Varlık Çerçeve Kodu İlk - Basamakla Sil
- 20. Birincil anahtar ihlali Varlık Çerçeve Kodu İlk
- 21. Varlık Çerçeve Kodu ilk olarak bir sütun oluşturulamıyor null
- 22. Kullanıcı etkinliğini izlemek için çerçeve var mı?
- 23. Varlık Çerçeve kodunda ilk başına birden fazla nesne kümesi nasıl yapılandırılır?
- 24. Varlık Çerçeve Kodu İlk adlandırma kuralları - çoğul tablo adlarına dönün?
- 25. Varlık Çerçeve ObjectQuery.Include()
- 26. Varlık Çerçeve Kodu İlk - Başka bir dosyada yapılandırma
- 27. Kovaryans bildirmek için bir yol var mı?
- 28. Dinamik olarak oluşturulmuş bir ad alanına işlev eklemek için temiz bir yol var mı?
- 29. Vue.js, kalıcı bir nesnenin bir kopyasını tekrarlanan bir diziye eklemek için yerleşik bir yol var mı?
- 30. Varlık Framework Çekirdek eklemek benzersiz kısıtlama kod ilk benim saha özniteliği için eşsiz kısıtlama eklemek yol bulamıyorum
Teşekkürler! Bunu EF ile başarmak için bir arka kapı var sevindim. Gelecek sürümlerde umuyoruz ki bunu yapmak için bir yol var, bu yüzden bunu gerçekleştirmek için DbContext'e gitmek zorunda değiliz. Eğer NHibernate gibi toplama (Select'i seçin (1) ve SQL'de Varsa) kullanarak yüklemeden .Count() ve .Any() yapıp yapmadığını biliyor musunuz? – Jason
Gezinme özelliği, yalnızca saymak için bile, ilgili tüm öğeleri yükler. “Count” ı desteklemek için [ekstra yükleme] gerekir (http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1050591-extra-lazy-loading). –
Eğer farklı bir için aynı veri bağlamında tekrar '.Load()' diyorsak, * onu değiştirmek yerine koleksiyonun bir sonraki sayfasına eklenir. Yeni bir veri içeriği oluşturmanın dışında, bunun etrafında herhangi bir yolu var mı? – Cocowalla