在mvc4中执行存储过程

时间:2015-01-21 18:44:12

标签: sql asp.net-mvc-4

我想在mvc4 on action按钮上执行插入查询, 我在我的控制器中有以下操作方法

[HttpPost]
        public ActionResult Index(QuestionBank model)
        {
            try
            {
                using (var db = new AdminContext())
                {
                    db.Questions.Add(model);
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            } 

        }

我有相关型号

public class QuestionBank

    {
        [Key]
        ////[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public string question { get; set; }
    }

正如我们在简单的asp.net应用程序中所做的那样,我想在操作按钮上执行该存储过程。 我不知道我的做法是否正确,但请指导我。

1 个答案:

答案 0 :(得分:0)

我假设您不想使用存储过程方法执行将问题插入数据库。

        [HttpPost]
        public ActionResult Index(QuestionBank model)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    SqlCommand cmd = new SqlCommand("[dbo].[sp_addQuestion]", conn) { CommandType = CommandType.StoredProcedure, CommandTimeout = 0 };
                    cmd.Parameters.Add(new SqlParameter("question", model.question) { SqlDbType = SqlDbType.Structured });

                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    cmd.ExecuteNonQuery();
                }
                //using (var db = new AdminContext())
                //{
                //    db.Questions.Add(model);
                //    db.SaveChanges();
                //}

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            } 

        }

这里是相应的存储过程

ALTER PROCEDURE [dbo].[sp_addQuestion]
    @question nvarchar(255)
AS
BEGIN   
    INSERT INTO [dbo].[QuestionBank] (Question)
        VALUES (@question)

    RETURN @@ERROR;
END