SQL Server 2008中存儲過程我創建了一個簡單的存儲過程在SQL Server 2008爲:如何使用asp.net的MVC
CREATE PROCEDURE viewPosts
AS
SELECT * FROM dbo.Post
現在,我不知道如何使用它在控制器的動作,我有一個數據庫對象,它是:
entities db = new entities();
請告訴我如何使用存儲過程與實體框架該數據庫對象。
SQL Server 2008中存儲過程我創建了一個簡單的存儲過程在SQL Server 2008爲:如何使用asp.net的MVC
CREATE PROCEDURE viewPosts
AS
SELECT * FROM dbo.Post
現在,我不知道如何使用它在控制器的動作,我有一個數據庫對象,它是:
entities db = new entities();
請告訴我如何使用存儲過程與實體框架該數據庫對象。
見article約30%:
- 在設計中,右鍵單擊實體並選擇存儲過程映射。
- 單擊,然後單擊出現的下拉箭頭。這暴露了在DB元數據中找到的所有函數的列表。
- 從列表中選擇過程。設計人員將盡最大努力使用名稱將存儲過程的參數與實體屬性進行匹配。在這種情況下,由於所有屬性名稱都與參數名稱匹配,因此它會正確映射每個屬性,因此不需要進行任何更改。注意:設計人員無法自動檢測返回字段的名稱。
- 在「結果列綁定」部分下,單擊並輸入變量名稱。設計人員應該爲這個最終映射自動選擇實體關鍵屬性。
對於詳細檢查此鏈接: http://www.entityframeworktutorial.net/data-read-using-stored-procedure.aspx
希望這會幫助你。
下面的代碼是我用來初始化存儲過程,然後獲得結果到變量returnedResult,在這種情況下,它是新創建的記錄的記錄ID。
SqlParameter paramResult = new SqlParameter("@Result", -1);
paramResult.Direction = System.Data.ParameterDirection.Output;
var addParameters = new List<SqlParameter>
{
new SqlParameter("@JobID", EvalModel.JobID),
new SqlParameter("@SafetyEvaluator", EvalModel.SafetyEvaluator),
new SqlParameter("@EvaluationGuid", EvalModel.EvaluationGuid),
new SqlParameter("@EvalType", EvalModel.EvalType),
new SqlParameter("@Completion", EvalModel.Completion),
new SqlParameter("@ManPower", EvalModel.ManPower),
new SqlParameter("@EDate", EvalModel.EDate),
new SqlParameter("@CreateDate", EvalModel.CreateDate),
new SqlParameter("@Deficiency", EvalModel.Deficiency.HasValue ? EvalModel.Deficiency.Value : 0),
new SqlParameter("@DeficiencyComment", EvalModel.DeficiencyComment != null ? EvalModel.DeficiencyComment : ""),
new SqlParameter("@Traffic", EvalModel.Traffic.HasValue ? EvalModel.Traffic.Value : 0),
paramResult
};
// Stored procedure name is AddEval
context.Database.ExecuteSqlCommand("AddEval @JobID, @SafetyEvaluator, @EvaluationGuid, @EvalType, @Completion, @ManPower, @EDate, @CreateDate, @Deficiency, @DeficiencyComment, @Traffic, @Result OUTPUT", addParameters.ToArray());
var returnedResult = paramResult.Value;
NewEvaluationID = Convert.ToInt32(returnedResult);