任何人都可以帮助我吗?我有一个存储过程,我想从ASP.NET MVC执行,它将显示数据库中的select语句。存储过程应接受ID
,然后返回与该ID
关联的一些记录。
这是我必须调用它的代码,但我不知道如何显示它。
SQL代码:
create procedure sp_members_by_skills
(@memberID int)
as
begin
Select memberID, skill_id
from members_skills
where memberID = @memberID
end
控制器代码:
SapnaDBEntities dbconn = new SapnaDBEntities();
public ActionResult call_members_by_skills(int? id)
{
var query = dbconn.sp_members_by_skills(id);
return Json(query,JsonRequestBehavior.AllowGet);
}
查看代码:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Members by their skills</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.memberID, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.memberID)
@Html.ValidationMessageFor(model => model.memberID)
</div>
</div>
</div>
}
@using (Ajax.BeginForm("call_members_by_skills", "Call_procedures", new AjaxOptions {HttpMethod="POST",InsertionMode=InsertionMode.Replace, UpdateTargetId="resultArea" }))
{
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Submit" class="btn btn-default" />
</div>
</div>
}
答案 0 :(得分:1)
您可以在db上下文对象上使用Database.SqlQuery
方法来执行存储过程/ sql语句。在调用存储过程之前进行空检查总是一个好习惯,因为你的方法参数是可以为空的。
var result = new List<MemberSkill>();
if(id!=null)
{
var memberParam= new SqlParameter("@memberID", id);
var result = db.Database.SqlQuery<MemberSkill>("EXEC sp_members_by_skills @memberID"
, memberParam);
}
return Json(result ,JsonRequestBehavior.AllowGet);
假设MemberSkill
是您的结果集的dto类。实体框架将执行存储过程并将结果映射到MemberSkill
实例的集合。
正如marc在评论中提到的那样,您不应该使用sp_