我使用ADO.NET在ASP.NET MVC 4上设置了我的项目。
但我认为我的数据访问层并不是最重要的。在我的公司中,数据提取以这种方式工作 - 首先,查询结果的所有列的索引都存储在变量中。然后,使用这些索引变量获取值。
它可以节省时间,因为DataReader["Name"]
会慢于DataReader[0]
但这种方法使我的开发速度变慢(映射变量等)。另外,在获取单个记录时,它实际上会使工作量增加一倍 - 首先它获取索引,然后获取数据,而不是仅获取数据。
我正在考虑迁移到EF。
无论我看到有关EF的任何文档,我都会以一种方式解释它,使用EF,我已经编写的存储过程将毫无用处。
是这样,如果我现在迁移到EF,我将不得不再次编写所有CRUD操作的代码?
答案 0 :(得分:1)
调用存储过程有不同的方法。我个人更喜欢使用EDMX
个文件。
只有几个步骤:
以下是我将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代码的音调进行比较,以做同样的事情!
答案 1 :(得分:1)
您可能出于错误的原因这样做。
如果DataReader["name"]
和DataReader[0]
之间的性能原因在您的项目中产生显着差异,则添加另一层间接(实体框架)可能会使性能变差。
但是,我更倾向于认为这种差异与您的情况并非真正相关,而您的公司正是出于对微观优化的误导性愿望。
我的建议是尝试EF,尝试使用DataTables(DataRow.Field提供对查询结果的类型安全访问),将其与您当前的方法进行比较,然后选择使您的开发生活更轻松的任何内容。在大多数情况下,数据访问时间将在很大程度上支配任何“列名查找”时间,所以我不会太担心这一点。