2014-10-07 3 views
0

Я использую инфраструктуру Entity в моем проекте ASP.NET MVC. Мне нужно знать, что если я правильно разобрался со следующим сценарием.Эффективное использование Entity Framework

Допустим, у моей таблицы Employee более 100000 записей, и я должен применять различные фильтры в соответствии с требованиями клиента.

Итак, я пишу 1 метод ReadAll() для извлечения всех записей из базы данных, а затем применяю фильтрацию к источнику данных с использованием лямбда-выражений.

Ex: Получить сотрудник по ID

public List<Employee> ReadAll() 
{ 
    // return List<Employee> 
} 


private Employee(int id) 
{ 
    Employee obj=ReadAll().where(o=>o.empID == id).First(); 
} 

Я пытаюсь использовать один читать весь метод, потому что есть различные фильтрации, которые будут применяться, и я не должен писать отдельные методы доступа к базе данных для каждого из них ,

Будет ли это негативно влиять на производительность моего приложения?

+0

Конечно, вы должны использовать IQueryable вместо List –

ответ

6

Изменить ReadAll, чтобы вернуть IQueryable, чтобы он не выполнял запрос до тех пор, пока вы не применили свой фильтр и не вызвали First() или ToList().

public IQueryable<Employee> ReadAll() 
{ 
    // return List<Employee> 
} 

В Entity Framework используется концепция deferred execution. Я рекомендую вам прочитать об этом.

Смежные вопросы