That such friends I am working an application with c # using the orm dapper. in case it is that in certain occasions I keep a certain number of records in a single execution, approximately 400 records. the problem is that sometimes, I throw an exception of the run time is exhausted, this happens alguardar data and update.
There is some way to extend the execution time, without the exception being thrown at me. since in my application I require it.
I'll tell you the code.
if (transferencia.transferenciaDetalles.Count != 0){
conn.Execute(@"INSERT INTO TransferenciaDetalles(EncabezadoID, ProductoID, CodigoPersonalizado, Cantidad, PesoOriginal,Piezas, EsBateo)
VALUES( @EncabezadoID, @ProductoID, @CodigoPersonalizado, @Cantidad, @PesoOriginal, @Piezas, @EsBateo)", transferencia.transferenciaDetalles);
}
transfer.transferDetails is a list of objects, this action takes some time 40 seconds with 400 records.
foreach (var transferencia in transferencia.transferenciaDetalles)
{
string QueryTransferenciaInventario = @"select
inv.Id,
inv.ProductoID as ProductoID, p.Nombre,
inv.CodigoPreimpreso,
inv.Peso,
inv.SucursalID
from Inventario as inv
inner join Productos as p on p.ID = inv.ProductoID
where inv.CodigoPreimpreso = @CodigoImpreso
and inv.Consumido = 0";
ProductoInventariado = VariablesGlobales.GlobalConnection.Query<InventarioDTO>(QueryTransferenciaInventario, new { CodigoImpreso = transferencia.CodigoPersonalizado }).ToList().FirstOrDefault();
TransferenciaDetalles transferenciaDetalle = VariablesGlobales.GlobalConnection.Query<TransferenciaDetalles>("select * from TransferenciaDetalles where CodigoPersonalizado = @Codigo", new { Codigo = transferencia.CodigoPersonalizado }).ToList().FirstOrDefault();
StringBuilder StringQuery = new StringBuilder();
string Query = " UPDATE inventario "
+ " SET UsuarioUltimoCambio = @UsuarioAlta "
+ ",FechaUltimoCambio = GETDATE() "
+ ",Peso = @Peso "
+ ",SucursalID = @SucursalID ";
string Consumido = "";
if (chkExterno.Checked)
{
Consumido = ",Consumido = @Consumido ";
}
else {
Consumido = ",Consumido = @Consumido ";
}
// validar si el check de externo esta aplicada
// si esta aplicado actualizar el campo de consumido y cambiar la sucursalID por el que se envio
Query = Query + Consumido + " WHERE ID = @ID ";
VariablesGlobales.GlobalConnection.Execute(Query, new
{
ID = ProductoInventariado.Id,
SucursalID = Convert.ToInt32(cbDestino.SelectedValue.ToString()),
UsuarioAlta = VariablesGlobales.UsuarioID,
Consumido = (chkExterno.Checked) ? true : true,
Peso = ProductoInventariado.Peso
});
// se actualiza el detalle de la transferencia en recibido para que no se acumule en las pantalla de transferencias pendientes para los externos
var rows = VariablesGlobales.GlobalConnection.Execute("Update TransferenciaDetalles Set PesoEnSucursal = @PesoEnSucursal, CantidadEnSucursal = @CantidadEnSucursal, HuboDiferencias = @HuboDiferencias,Recibido = @Recibido Where ID = @ID",
new { CantidadEnSucursal = 1, PesoEnSucursal = ProductoInventariado.Peso, Recibido = 1, HuboDiferencias = 0, ID = transferenciaDetalle.Id });
}
In the following, in the iteration I make a selection, to determine that the record exists. second, and in the last 2 I do updates. but there, inside the foreach is where at certain times. It throws the exception of the execution time runs out, there is some way to avoid that problem, to lengthen the time it takes. I hope someone helps me, thanks.