Örneklerini iade eden havuzlara sahip birçok proje görüyorum IQueryable
. Bu, ek filtrelere izin verir ve sıralama, IQueryable
üretilen farklı SQL'e çeviren diğer kodlarla gerçekleştirilebilir . Bu modelin nereden geldiğini ve iyi bir fikir olup olmadığını merak ediyorum.
En büyük endişem, bir IQueryable
numaralandırıldığı zaman, veritabanına bir süre sonra ulaşacağıma dair bir söz olduğudur. Bu, bir hatanın havuzun dışına atılacağı anlamına gelir. Bu, Entity Framework istisnasının uygulamanın farklı bir katmanına atıldığı anlamına gelebilir.
Ayrıca geçmişte Çoklu Aktif Sonuç Kümeleri (MARS) ile ilgili sorunlara da girdim (özellikle işlemleri kullanırken) ve bu yaklaşım bunun daha sık gerçekleşmesine neden olacak gibi görünüyor.
Depo kodunu terk etmeden önce veritabanının isabetli olduğundan emin olmak için her zaman LINQ ifadelerimin her birini AsEnumerable
veya ToArray
sonunu çağırdım .
Döndürmenin IQueryable
bir veri katmanı için bir yapı taşı olarak yararlı olup olmadığını merak ediyorum . Bir depo ile daha da büyük bir bina oluşturmak için başka bir depo çağıran oldukça abartılı bir kod gördüm IQueryable
.
where
Ertelenen bir madde eklerlerse , sonuç kümesinin tamamını değil, IQueryable
yalnızca bu verileri kablo üzerinden göndermeniz gerekir .