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);