我有一个从 MVC 控制器调用的 DAL 项目。我向该方法传递了我想要更新的对象列表。我添加了断点,它到达 ExecuteNonQueryAsync() 然后挂起。网站一直在“加载”,它永远不会返回 1;该查询在我尝试将其移动以执行异步之前有效(您可以看到我在哪里注释掉了查询的执行。我确实删除了连接打开/关闭部分,但在此之前查询工作正常。
我还更新了下面的代码,以便可以使用 OBJECT、ListObjects 和 COL1/COL2 发布它,而不是使用实际的值/对象名称。
提前致谢!
static async Task<int> NonQuery(System.Data.SqlClient.SqlConnection conn, System.Data.SqlClient.SqlCommand cmd)
{
await conn.OpenAsync();
await cmd.ExecuteNonQueryAsync();
return 1;
}
public static bool updateQuery(List<OBJECT> listObjects)
{
string cnn = System.Configuration.ConfigurationManager.ConnectionStrings["connstring"].ToString();
using (System.Data.SqlClient.SqlConnection mySqlConnection = new System.Data.SqlClient.SqlConnection(cnn))
{
StringBuilder SQLQuery = new StringBuilder();
SQLQuery.AppendLine("UPDATE TABLENAME ");
SQLQuery.AppendLine("SET COL1 = @COL1, ");
SQLQuery.AppendLine("WHERE COL2 = @COL2 ");
//mySqlConnection.Open();
foreach (ObjectType ot in listObjects)
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(SQLQuery.ToString(), mySqlConnection);
cmd.Parameters.Add("@COL1", System.Data.SqlDbType.Int).Value = COL1VALUE;
cmd.Parameters.Add("@COL2", System.Data.SqlDbType.Int).Value = COL2VALUE;
int result = NonQuery(mySqlConnection, cmd).Result;
//cmd.ExecuteNonQuery();
}
//mySqlConnection.Close();
}