コントローラの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
終わり
この時点では、コードにエラーはなく、コンパイルされますが、実行されると、ストアドプロシージャは実行されません。
どんな助けでもいただければ幸いです。