我正在寻找一种在控制器的 C# 代码中调用我的存储过程的方法。我已经在控制器中拥有了我需要的一切。我在编辑的帖子上有ID,提交时我需要做的是调用带有参数id的存储过程。在 SQL 中,您可以这样做:
EXEC [dbo].[AddGlassCutting] @AuditScheduleID = 1192
去测试。这在我的网站代码中不起作用。数据库是通过代码优先的方法完成的。
2012 年 9 月 14 日 1:33 更新
从编辑帖子添加代码 - 这也是我需要它执行的地方:
[HttpPost]
public ActionResult Edit(int id, AuditScheduleEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToSpacerType();
_db.Entry(viewModel.AuditScheduleInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Audit", new {id});
}
else
{
return View(viewModel);
}
}
2012 年 9 月 18 日更新
[HttpPost]
public ActionResult Edit(int id, AuditScheduleEdit viewModel)
{
if (ModelState.IsValid)
{
var addGlassCutting = new SqlParameter("@AuditScheduleID", id);
_db.Database.SqlQuery<QQAForm.ViewModels.AuditScheduleEdit.AddGlassCutting>
("AddGlassCutting @AuditScheduleID", addGlassCutting);
viewModel.PopulateCheckBoxsToSpacerType();
_db.Entry(viewModel.AuditScheduleInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Audit", new {id});
}
else
{
return View(viewModel);
}
}
这是我的存储过程:
ALTER PROCEDURE [dbo].[AddGlassCutting]
-- Add the parameters for the stored procedure here
@AuditScheduleID int = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
/****** Script for adding Glass Cutting ******/
INSERT INTO QQAEntities.dbo.MainAnswers (AuditScheduleID, MainQuestionID)
SELECT @AuditScheduleID, MainQuestionID
FROM QQAEntities.dbo.MainQuestions
WHERE ReferenceNo > 0
结尾
此时代码中没有错误,它可以编译,但是在执行时它不会运行存储过程。
任何帮助,将不胜感激。