Мне нужно обновить таблицу, но это ничего не делает. В представлении для редактирования моих значений он «работает», но когда я нажимаю для подтверждения изменений, он не меняет никаких значений в базе данных. Я действительно застрял, я проверяю эти файлы, но не вижу, в чем проблема.
Это мой файл .cs
public void update(Propietario objPropietario)
{
try
{
comando = new SqlCommand("spEditarPropietario", objConexion.getConexion());
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@id", objPropietario.IdPropietario);
comando.Parameters.AddWithValue("@Nombre", objPropietario.Nombre);
comando.Parameters.AddWithValue("@IdTipoDocumento", objPropietario.TipoDocumento);
comando.Parameters.AddWithValue("@ValorDocumento", objPropietario.ValorDocumentoId);
objConexion.getConexion().Open();
comando.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
objConexion.getConexion().Close();
objConexion.cerrarConexion();
}
}
Таблица:
CREATE TABLE [dbo].[Propietario]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[IdTipoDocumento] [int] NOT NULL,
[Nombre] [varchar](100) NOT NULL,
[ValorDocumento] [varchar](30) NULL,
CONSTRAINT [PK_Propietario]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Propietario] WITH CHECK
ADD CONSTRAINT [FK_Propietario_TipoDocumentoId]
FOREIGN KEY([IdTipoDocumento]) REFERENCES [dbo].[TipoDocumentoId] ([ID])
GO
ALTER TABLE [dbo].[Propietario] CHECK CONSTRAINT [FK_Propietario_TipoDocumentoId]
GO
Это хранимая процедура, которую я использую:
CREATE PROCEDURE spEditarPropietario
(@id int,
@Nombre VARCHAR(100),
@IdTipoDocumento int,
@ValorDocumento VARCHAR(30))
AS
BEGIN
UPDATE [dbo].Propietario
SET Nombre = @Nombre,
IdTipoDocumento = @IdTipoDocumento,
ValorDocumento = @ValorDocumento
WHERE ID = @id
END
Это мой контроллер:
[HttpGet]
public ActionResult Update(int ID)
{
Propietario objpropietario = new Propietario(ID);
objetoPropietario.find(objpropietario);
return View(objpropietario);
}
[HttpPost]
public ActionResult Update(Propietario objpropietario)
{
objetoPropietario.update(objpropietario);
return RedirectToAction("Inicio");
}
У меня есть этот метод поиска, и он хорошо работает.
public bool find(Propietario objpropietario)
{
bool hayRegistros;
try
{
comando = new SqlCommand("spVerPropietario",
objConexion.getConexion());
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@ID",
objpropietario.IdPropietario);
objConexion.getConexion().Open();
SqlDataReader read = comando.ExecuteReader();
hayRegistros = read.Read();
if (hayRegistros)
{
objpropietario.IdPropietario =
Convert.ToInt32(read[0].ToString());
objpropietario.Nombre = read[1].ToString();
objpropietario.TipoDocumento =
Convert.ToInt32(read[2].ToString());
objpropietario.ValorDocumentoId = read[3].ToString();
objpropietario.EstadoError = 99;
}
else
{
objpropietario.EstadoError = 1;
}
}
catch (Exception)
{
throw;
}
finally
{
objConexion.getConexion().Close();
objConexion.cerrarConexion();
}
return hayRegistros;
}
Это хранимая процедура:
CREATE PROCEDURE spVerPropietario
(@ID int)
AS
BEGIN
SELECT ID, Nombre, IdTipoDocumento, ValorDocumento
FROM [dbo].Propietario
WHERE ID = @ID
END