C# 在实体框架中调用存储过程的最佳方法是什么

C# 在实体框架中调用存储过程的最佳方法是什么,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我已经从MS SQL数据库中生成了一个EF模型,并且包括了StoredProcess和Tables。我想在我的项目中实现存储过程。哪种方法最有优势 var data = db.DARs.SqlQuery("db.sp_GetEmployees").ToList(); 或 以下是完整代码: private UniversityEntities1 db = new UniversityEntities1(); public List<DAR> test() { va

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

var data = db.DARs.SqlQuery("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;
}
私立大学实体1 db=新大学实体1();
公共列表测试()
{    
var data=db.DARs.SqlQuery(“db.sp_GetEmployees”).ToList();
var data2=db.sp_GetEmployees.ToList();
返回数据;
}

最好使用mapper存储过程,而不是调用纯SQL文本(在示例
data2
中)


最好是因为EF使用存储过程返回的特定数据类型生成结果行。而且你不需要在你的代码中映射它-EF为你做它。然后,您可以像处理包含具有类型化字段的对象的集合一样处理结果

var data2 = db.sp_GetEmployees().ToList();
确保每次使用该语句时重命名过程都会导致编译错误。这些问题可以很快解决


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

不会导致编译错误。只有在执行此代码时,才会出现错误
var data2 = db.sp_GetEmployees().ToList();