【问题标题】:Using Entity Framework Efficiently有效地使用实体框架
【发布时间】:2014-10-07 21:19:16
【问题描述】:

我在我的 ASP.NET MVC 项目中使用实体框架。如果我正确处理以下场景,我需要知道这一点。

假设我的 Employee 表有超过 100000 条记录,我必须根据客户要求应用各种过滤。

所以我编写了 1 个方法 ReadAll() 从数据库中检索所有记录,然后使用 lambda 表达式对数据源进行过滤。

例如:通过 ID 获取员工

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


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

我正在尝试使用一种读取所有方法,因为要应用各种过滤,并且我不必为每个过滤器编写单独的数据库访问方法。

这会对我的应用程序性能产生不利影响吗?

【问题讨论】:

  • 当然可以,你应该使用 IQueryable 而不是 List

标签: c# asp.net asp.net-mvc linq entity-framework


【解决方案1】:

将 ReadAll 更改为返回 IQueryable,以便在您应用过滤器并调用 First() 或 ToList() 之前它不会执行查询。

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

Entity Framework 使用一个名为deferred execution 的概念。我鼓励你阅读它。

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2012-07-17
    相关资源
    最近更新 更多