哪种方法是在Entity Framework中调用Store Procedures

时间:2016-05-30 13:21:22

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

我已经从MS SQL数据库中生成了EF模型,并且我已经包含了StoredProcedures和Tables。我想在我的项目中实现存储过程。哪种方法更有优势?

var data = db.DARs.SqlQuery("db.sp_GetEmployees").ToList();

var data2 = db.sp_GetEmployees().ToList();

以下是完整代码:

private UniversityEntities1 db = new UniversityEntities1(); 

public List<DAR> test()
{    
    var data = db.DARs.SqlQuery("db.sp_GetEmployees").ToList();
    var data2 = db.sp_GetEmployees.ToList();
    return data;
}

2 个答案:

答案 0 :(得分:2)

最好使用映射器存储过程而不是调用纯SQL文本(在你的exmple data2中)。

因为EF会生成具有存储过程返回的特定数据类型的结果行,这样会更好。而且您不需要在代码中映射它 - EF会为您执行此操作。然后,您可以使用结果,就像使用包含带有类型字段的对象的集合一样。

答案 1 :(得分:1)

我还想通过使用

添加它
var data2 = db.sp_GetEmployees().ToList();

确保每次使用该语句时重命名过程都会导致编译错误。这些可以很快修复。

如果您只是使用字符串,则必须记住在整个项目中替换程序名称的所有出现。项目本身将编译。