2016-05-30 90 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

它不會導致編譯錯誤。只有在執行此代碼時,您纔會收到錯誤消息 –