2016-05-30 87 views
1

我已经从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

这是更好地使用,而不是调用纯SQL文本(在你的exmple data2)映射器存储procedutes。

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

1

我还想补充一点,通过使用

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

您确保每一次改名的程序会导致编译错误您正在使用的语句。这些可以很快修复。

如果你只是使用一个字符串,你将不得不记住在整个项目中替换过程名称的所有出现。该项目本身将编译。

+0

它不会导致编译错误。只有在执行此代码时,您才会收到错误消息 –