从ADO.NET迁移到Entity Framework

时间:2014-03-04 10:52:47

标签: c# entity-framework ado.net

我使用ADO.NET在ASP.NET MVC 4上设置了我的项目。

但我认为我的数据访问层并不是最重要的。在我的公司中,数据提取以这种方式工作 - 首先,查询结果的所有列的索引都存储在变量中。然后,使用这些索引变量获取值。 它可以节省时间,因为DataReader["Name"]会慢于DataReader[0]

但这种方法使我的开发速度变慢(映射变量等)。另外,在获取单个记录时,它实际上会使工作量增加一倍 - 首先它获取索引,然后获取数据,而不是仅获取数据。

我正在考虑迁移到EF。

无论我看到有关EF的任何文档,我都会以一种方式解释它,使用EF,我已经编写的存储过程将毫无用处。

是这样,如果我现在迁移到EF,我将不得不再次编写所有CRUD操作的代码?

2 个答案:

答案 0 :(得分:1)

调用存储过程有不同的方法。我个人更喜欢使用EDMX个文件。

只有几个步骤:

  • 导入存储过程

enter image description here

  • 创建功能导入

以下是我将function import打包到方法中的示例:

    private static List<GetEmployees_Result> GetEmployeeList()
    {
        using (var db = new DBEntities())
        {
            //do some crazy Linq
            ObjectResult<GetEmployees_Result> listOfEmployees = db.GetEmployees("USA");
            return listOfEmployees.ToList();
        }
    }

多数民众赞成,现在将其与您需要编写的ADO.NET代码的音调进行比较,以做同样的事情!

SAMPLE PROJECT

答案 1 :(得分:1)

您可能出于错误的原因这样做。

如果DataReader["name"]DataReader[0]之间的性能原因在您的项目中产生显着差异,则添加另一层间接(实体框架)可能会使性能变差。

但是,我更倾向于认为这种差异与您的情况并非真正相关,而您的公司正是出于对微观优化的误导性愿望。

我的建议是尝试EF,尝试使用DataTables(DataRow.Field提供对查询结果的类型安全访问),将其与您当前的方法进行比较,然后选择使您的开发生活更轻松的任何内容。在大多数情况下,数据访问时间将在很大程度上支配任何“列名查找”时间,所以我不会太担心这一点。