içinde yer almıyor. Şu anda C# 4.0'da EntityFramework 6.0 ile bir uygulama oluşturuyorum.SQL sorgusu
Veritabanından bir öğe listesi almaya çalışıyorum ancak sorun, EF çerçevesi tarafından oluşturulan SQL sorgusunun nereye koymuyor olmasıdır.
Yani, tüm tablo/görünüm belleğe yüklenir ve yalnızca 2 veya 3 öğe almak yaklaşık 10 saniye sürer. Aşağıda
, benim GenericRepostitory gelen yöntemi:public IList<TEntity> GetList(Func<TEntity, bool> where, params Expression<Func<TEntity, object>>[] navigationProperties)
{
using (var dbContextScope = contextScopeFactory.CreateReadOnly())
{
IQueryable<TEntity> dbQuery = Context.Set<TEntity>().AsQueryable();
foreach (Expression<Func<TEntity, object>> navigationProperty in navigationProperties)
dbQuery = dbQuery.Include<TEntity, object>(navigationProperty);
var list = dbQuery
.AsNoTracking()
.Where(where);
Context.Database.Log = s => Debug.WriteLine(s);
return list.ToList<TEntity>();
}
}
Ve böyle diyoruz:
var repository = repositoryFactory.Get<Context, Entity>();
var items = repository.GetList(x => x.FakeID <= 10);
dönüş sonuç iyi ama yaklaşık 10 saniye alınmasını sürer. Ve hata ayıklama oluşturulan SQL sorgusunu yazdığında, nerede yan tümcesi hiçbir yerde
BulList işlevimi, nerede eklediğinizi içerecek şekilde nasıl değiştirebilirim?
Umarım bu bilgilerle yeterince açıkım ve ingilizcem için özür dilerim. Benim anadil değil: Neyse/
teşekkür ediyoruz Yardımlarınız için
' Context.Set() .AsQueryable() gerek '? 'AsQueryable' burada gerekli olmamalı. –
Evet yapmamalı, kaldırdım. Çünkü bu problemle bir kaç saat uğraştım ve çok farklı şeyler denedim ... – Mica