C#中的异步存储过程调用

时间:2017-03-30 09:50:40

标签: c# asp.net asp.net-mvc stored-procedures model-view-controller

我是C#的新手。我试图在我的MVC ASP.net应用程序中进行异步存储过程调用。

这就是我的代码:

public void RevalidateRule(int ruleKey)
    { 
        var conStr = ConfigurationManager.ConnectionStrings["ValidationModuleEntities"].ConnectionString;

        using (var conn = new SqlConnection(conStr))
        {
            conn.Open();
            SqlCommand command = new SqlCommand("[dbo].[ReValidateQuery]", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@ValidationRuleKey", ruleKey));
            command.CommandTimeout = 50;
            command.ExecuteNonQuery();
        }
    }

每当我在视图中按下保存按钮时,都必须触发它。但是,它似乎没有做任何事情。

有没有人有想法?

2 个答案:

答案 0 :(得分:0)

因此,您希望将值从View传递给Controller并执行存储过程。我将尝试解释如何快速完成工作。 这是一个例子:

<强>控制器

public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Index(string data)
{
    int ruleKey = Convert.ToInt32(data);
    Helper helper = new Helper();
    helper.RevalidateRule(ruleKey);
    return View();
}

查看

@using (Html.BeginForm())
{
    <input type="text" name="data" />
    <input type="submit" value="Submit" />
}

助手类

public class Helper
{
    public void RevalidateRule(int ruleKey)
    {
        var conStr = ConfigurationManager.ConnectionStrings["ValidationModuleEntities"].ConnectionString;

        using (var conn = new SqlConnection(conStr))
        {
            conn.Open();
            SqlCommand command = new SqlCommand("[dbo].[ReValidateQuery]", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@ValidationRuleKey", ruleKey));
            command.CommandTimeout = 50;
            command.ExecuteNonQuery();
        }
    }
}

所以,这样你:

  1. 创建HelperClass以执行存储过程
  2. 将所需值从View传递到Controller
  3. 执行存储过程。

答案 1 :(得分:-2)

请在代码中写try catch。 如果存储过程中出现任何错误,您将在何处获得异常

try
{
  var conStr = ConfigurationManager.ConnectionStrings["ValidationModuleEntities"].ConnectionString;

        using (var conn = new SqlConnection(conStr))
        {
            conn.Open();
            SqlCommand command = new SqlCommand("[dbo].[ReValidateQuery]", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@ValidationRuleKey", ruleKey));
            command.CommandTimeout = 50;
            command.ExecuteNonQuery();
        }
}
catch(exception ex)
{

}