IQuareble and IEnumareble
IQuareble;
Şarta bağlı query oluşturarak doğrudan veritabanı üzerinde sorgulama işlemi yapar. Sorgular Linq to sql düzeyinde yapılır.
IEnumareble;
Tüm verileri memoryde tutarak sorgulama işlemlerini memory üzerinden yapar. Sogular Linq to Object düzeyinde yapılır.
Bakıldığında ikisi içinde aynı sorgu yazıldığı görülecektir. Her ne kadar yazılan kodlar aynı olsada yapılan işlemler farklıdır. IEnumerable ile önce Employee listesi hafızya alınır ve tutulur.Daha sonra where şartları hafızadaki liste üzerine yapılır ve ona göre yazdırılır. IQuearyble da ise belirtilen şartları önce birleştirip tek bir Linq to sorgusuna çevirip müteakiben sorgulama direk veri tabanı üzerinde yapılır.
IQueryable
IEnumerable
IQueryable ise şartlara bağlı query oluşturarak doğrudan veritabanı üzerinden sorgulama işlemi yapar
IEnumerable tüm verileri alıp memory de tutarak, sorgulama işlemlerini memory üzerinden yapar
hafıza dışındaki yani veritabanı için idealdir.
Hafızadaki koleksiyonlar için idealdir.
CreateQuery ve Execute yöntemlerine sahiptir. doğrudan özel sorgular yazdırılıp çalıştırılabilir.
Özel sorguların yazılmasını desteklemez
lazy loading özelliğini destekler
lazy loading özelliğini desteklemez
İkisi arasındaki en önemli bağlantı IQuearyble'ın IEnumerable yerine kullanılıyor olabilmesidir. yani onu kapsıyor olabilmesidir.
Eğer milyonlarca kayıt üzerinde sorgulama işlemi yapıyorsak elbette IQueryable IEnumerable göre daha hızlı sorgulama işlemi yapar.
Last updated
Was this helpful?