Когда я запускаю хранимую процедуру вручную, она работает нормально.Однако всякий раз, когда я пытаюсь вызвать его с помощью кода ниже, ничего не обновляетсяОдна вещь, которую я заметил, заключается в том, что в своей хранимой процедуре я изменяю поле «Дата изменения» на текущее время / дату, и это обновляется;однако, ни одно из моих других значений не является.
Вот мой метод, который я использую:
public void EditProduct(int productID, string productName, string productNumber, string productColor, string productSubcategory)
{
ConfigureDataAccess();
myCommand = new SqlCommand("[dbo].[UpdateProductInfo]", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@ProductID", productID);
myCommand.Parameters.AddWithValue("@ProductName", String.IsNullOrWhiteSpace(productName) ? (object)DBNull.Value : (object)productName);
myCommand.Parameters.AddWithValue("@ProductNumber", String.IsNullOrWhiteSpace(productNumber) ? (object)DBNull.Value : (object)productNumber);
myCommand.Parameters.AddWithValue("@ProductColor", String.IsNullOrWhiteSpace(productColor) ? (object)DBNull.Value : (object)productColor);
myCommand.Parameters.AddWithValue("@ProductSubcategory", String.IsNullOrWhiteSpace(productSubcategory) ? (object)DBNull.Value : (object)productSubcategory);
try
{
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
}
catch (SqlException exception)
{
exception.Data.Add("cstring", myConfiguration);
throw;
}
catch (InvalidOperationException ex)
{
ex.Data.Add("cStatus", myConnection.State);
throw;
}
}
finally
{
myConnection.Close();
}
Я не верю, что ConfigureDataAccess()
является проблемой, потому что другие методы используют его, и они работают нормально.Есть что-нибудь, что сразу торчит?
Редактировать: Вот моя хранимая процедура:
ALTER PROCEDURE [dbo].[UpdateProductInfo]
@ProductID as int,
@ProductName as varchar(50),
@ProductNumber as varchar(25),
@ProductColor as varchar(15),
@ProductSubcategory as varchar(50)
AS
BEGIN
SET NOCOUNT ON;
UPDATE P
SET P.Name = @ProductName, P.ProductNumber = @ProductNumber, P.Color = @ProductColor, P.ModifiedDate = GetDate(),
P.ProductSubcategoryID = (SELECT PS.ProductSubcategoryID FROM Production.ProductSubcategory PS WHERE PS.Name = @ProductSubcategory)
FROM Production.Product as P
LEFT OUTER JOIN Production.ProductSubcategory as PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID
WHERE P.ProductID = @ProductID
END
Вот мой ConfigureDataAccess()
метод:
private string myConfiguration;
private SqlConnection myConnection;
private SqlCommand myCommand;
private SqlDataReader myReader;
private List<Product> myProducts;
public void ConfigureDataAccess()
{
myConfiguration = ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString;
myConnection = new SqlConnection(myConfiguration);
myReader = null;
myProducts = new List<Product>();
}