C#中使用EntityFramework(EF)生成實體進行存儲過程的調用

在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(),不然返回的值不能用

數據庫

相關文章
相關標籤/搜索