我正在开发一个用于仓库管理的MVC应用程序,我必须更新我的库存表,特别是Stock字段,当我收到我需要增加库存字段的产品时,当我发送产品时我需要打折股票字段,我只能添加一个新行),我想要的是更新行(仅限现场库存)附加照片Table Inventario
我的控制器[发布]:
//CREAMOS/DECLARAMOS LA TRANSACCION
using (var transaccion = db.Database.BeginTransaction())
{
try
{
//CARGO LOS DATOS A RECEPCION
Recepcion recepcion = new Recepcion
{
Kn_CodigoProveedor = proveeid,
Kn_CodigoBodega = bodeid,
UserId = usuaid,
f_Ingreso = fingreso,
f_Factura = ffactura,
f_Guia = fguia,
n_Guia = nguia,
n_Factura = nfactura,
n_OrdenCompra = nordencompra,
};
db.Recepcions.Add(recepcion);
db.SaveChanges();
//RECUPERO EL ULTIMO ID QUE GENERO (ULTIMA RECEPCION)
ultimarecepcionid = db.Recepcions.ToList().Select(r => r.Kn_CodigoRecepcion).Max();
//CICLO QUE GUARDA CADA ELEMENTO DEL DETALLE
foreach (ProductosRecepcion item in recepcionview.ProductosList)
{
var detalle = new RecepcionDetalle()
{
Kn_CodigoRecepcion = ultimarecepcionid,
Kn_CodigoProducto = item.Kn_CodigoProducto,
Foto = item.Foto,
d_Cantidad = item.d_Cantidad,
Precio_Unitario = item.Precio_Unitario,
};
//CARGO EL OBJETO AL DETALLE
db.RecepcionDetalles.Add(detalle);
foreach (ProductosRecepcion item1 in recepcionview.ProductosList)
{
//RECUPERO ULTIMO STOCK (TABLA INVENTARIO)
UltimoStock = db.Inventarios.Where(b => b.Kn_CodigoBodega == bodeid).Where(p => p.Kn_CodigoProducto == item.Kn_CodigoProducto).ToList().Select(p => p.Stock).Max();
}
//ARMO EL OBJETO PARA ACTULIZAR MI TABLA INVENTARIO
var stock = new Inventario()
{
Kn_CodigoProducto = item.Kn_CodigoProducto,
Kn_CodigoBodega = bodeid,
Stock = (detalle.d_Cantidad + UltimoStock),
};
//GUARDO
db.Inventarios.Add(stock);
}
db.SaveChanges();
//CONFIRMAMOS EXITO DE TRANSACCION
transaccion.Commit();
}
catch (Exception ex)
{
//CONFIRMAMOS FRACASO DE TRANSACCION
transaccion.Rollback();
ViewBag.Error = "ERROR: " + ex.Message;
return View(recepcionview);
}
}
对不起我的英文,对我有什么帮助?
答案 0 :(得分:0)
根据我的理解,您必须通过增加或减少“库存”列来更新库存水平。
但是,您要在代码中插入新记录:
var stock = new Inventario()
{
Kn_CodigoProducto = item.Kn_CodigoProducto,
Kn_CodigoBodega = bodeid,
Stock = (detalle.d_Cantidad + UltimoStock),
};
//GUARDO
db.Inventarios.Add(stock);
这是你应该做的:
获取要更新的记录(通过检索)
var stockItem = db.Inventarios(s => s.ReplaceBYYourField == replaceBYYourValue).FirstOrDefault();
通过增加或减少股票价值来更新记录:
stockItem.Stock + = 1;
保存更改:
db.Entry(stockItem).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
代码遵循EF版本4.在较新版本中,语法可能不同,但在我提到的步骤中应用相同的逻辑。让我知道您正在使用哪个EF版本,以便我可以更新我的答案。