我已经从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;
}
答案 0 :(得分:2)
最好使用映射器存储过程而不是调用纯SQL文本(在你的exmple data2
中)。
因为EF会生成具有存储过程返回的特定数据类型的结果行,这样会更好。而且您不需要在代码中映射它 - EF会为您执行此操作。然后,您可以使用结果,就像使用包含带有类型字段的对象的集合一样。
答案 1 :(得分:1)
我还想通过使用
添加它var data2 = db.sp_GetEmployees().ToList();
确保每次使用该语句时重命名过程都会导致编译错误。这些可以很快修复。
如果您只是使用字符串,则必须记住在整个项目中替换程序名称的所有出现。项目本身将编译。