在EF中使用定義對象模型的方式調用一個存儲過程,這個存儲過程返回的是一組包含兩列的值。(ProjectName,Count)
下面是存儲過程:
CREATE procedure [dbo].[Pro_Project_By_UserID]
@userID nvarchar(36)
AS
SELECT Project AS ProjectTypeName,
Count(BA.ProjectId) AS ProjectCount
FROM dbo.B_AllProjectInfo BA
WHERE IsComplex = 1
AND UserId = @userID
GROUP BY Project
在DB中定義了這個SP後,在C#中的*.edmx中,選擇‘從數據庫更新模型’,更新方式和更新表同樣。這樣在C#中就會生成
Pro_Project_By_UserID_Result
的類,還有一個函數
public virtual ObjectResult<Pro_Project_By_UserID_Result> Pro_Project_By_UserID(string userID)
{
var userIDParameter = userID != null ?
new ObjectParameter("userID", userID) :
new ObjectParameter("userID", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Pro_Project_By_UserID_Result>("Pro_Project_By_UserID_UserID", userIDParameter);
}
在實際執行時,代碼以下:
var curProjects = dataContext.Pro_Project_By_UserID(myUserID).ToList();
要加上ToList(),不然返回的值不能用
數據庫