У меня есть SQL-запрос мультизаявления, который происходит в SqlTransaction следующим образом:
string sName = "";
string sNumber = "";
string sFirstName = "";
string sqlQuery1 = @"INSERT INTO myTable(Name, Number) VALUES (@_Name, @_Number)";
string sqlQuery2 = @"INSERT INTO myOtherTable( ID, FirstName) VALUES ( @_ID, @_First )";
SqlConnection conn = new SqlConn(***);
conn.Open();
SqlTransaction transaction;
SqlCommand command1 = new SqlCommand(sqlQuery1, conn, transaction);
SqlCommand command2 = new SqlCommand(sqlQuery2, conn, transaction);
command1.Parameters.Add("@_Name", SqlDbType.NVarChar, 255).Value = sName;
command1.Parameters.Add("@_Number", SqlDbType.NVarChar, 255).Value = sNumber;
int? returnedID = (int?)command1.ExecuteScalar();
command2.Parameters.Add("@_ID", SqlDbType.Int).Value = (int)returnedID; <--- Error
command2.Parameters.Add("@_First", SqlDbType.NVarChar, 255).Value = sFirstName;
command2.ExecuteNonQuery();
transaction.Commit();
В линии я отметил как ошибка, я добираюсь, ошибка во время выполнения о "Параметризированном запросе ожидает параметр _ID, который не поставлялся.
Теперь, принятие, у меня нет опечаток, упрощая мой код до этого примера, почему я получаю нулевое значение в returnedID для правильно выполненного заявления? Когда я просто управляю заявлением самостоятельно в вопросе, я не получаю ошибок, и оно возвращается успешный. Почему пустой указатель, управляя им в этой сделке? Спасибо!
Править: Я намеренно бросил попытку {} выгода от этого, поскольку это не относилось к вопросу, который я имел. Иначе я просто забыл о IDENTITY_SCOPE (), что мне было нужно в Запросе на вставку, так как иначе не будет никакого возвращаемого значения.