Получение одного товара из таблицы, содержащей 6000 записей, занимает около 30 секунд. Очевидно, это неприемлемо, и я не могу понять, почему. Мой стек - это .NET 4.5, EF 6 и Web API 2. Является ли что-то невероятно неправильным с тем, что я сделал?Entity Framework действительно медленный Получение единственного элемента
// DbSet
internal DbSet<TEntity> _dbSet;
// Ctor
public GenericRepository(TContext context)
{
_context = context;
_context.Configuration.ProxyCreationEnabled = false;
_dbSet = _context.Set<TEntity>();
}
// Really slow method
public TEntity GetByFilter(Func<TEntity,bool> filter, params Expression<Func<TEntity, object>>[] includes)
{
IQueryable<TEntity> query = _dbSet;
if (includes != null)
{
foreach (var include in includes)
query = query.Include(include);
}
var entity = query.Where(filter).FirstOrDefault();
return entity;
}
// Here's how it's called. It returns a single item
var x = _unitOfWork.Repository.GetByFilter(i => i.WinId == id, null);
Каковы ваши фильтр положения, как? –
@ChristianSauer ... Я обновил свой вопрос –
Вы выполнили трассировку SQL, чтобы определить, какой SQL был отправлен на сервер базы данных? Это может быть плохая индексация. Если вы можете зафиксировать точный SQL, отправленный в базу данных, и запустить его за пределы EF, он проявляет такую же медленность? – barrypicker