public int GetNextSecuentialId_(int pintNodeId, int pintTableId) { using (var oCtx = new DatabaseContext()) { var objSecuential = (from a in oCtx.Secuential where a.i_TableId == pintTableId && a.i_NodeId == pintNodeId select a).SingleOrDefault(); // Actualizar el campo con el nuevo valor a efectos de reservar el ID autogenerado para evitar colisiones entre otros nodos if (objSecuential != null) { objSecuential.i_SecuentialId = objSecuential.i_SecuentialId + 1; } else { objSecuential = new SecuentialBE(); objSecuential.i_NodeId = pintNodeId; objSecuential.i_TableId = pintTableId; objSecuential.i_SecuentialId = 0; oCtx.Secuential.Add(objSecuential); } oCtx.SaveChanges(); return(objSecuential.i_SecuentialId.Value); } }
public int ReserveRangeSecuentials(int pintNodeId, int pintTableId, int lot) { var value = 0; var scope = new TransactionScope( TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.RepeatableRead }); using (scope) { using (var oCtx = new DatabaseContext()) { var objSecuential = (from a in oCtx.Secuential where a.i_TableId == pintTableId && a.i_NodeId == pintNodeId select a).SingleOrDefault(); if (objSecuential != null) { objSecuential.i_SecuentialId = objSecuential.i_SecuentialId + lot; } else { objSecuential = new SecuentialBE(); objSecuential.i_NodeId = pintNodeId; objSecuential.i_TableId = pintTableId; objSecuential.i_SecuentialId = 0; oCtx.Secuential.Add(objSecuential); } oCtx.SaveChanges(); value = objSecuential.i_SecuentialId.Value; } scope.Complete(); return value; } }
public int GetNextSecuentialId(int pintNodeId, int pintTableId) { var value = 0; var scope = new TransactionScope( TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.RepeatableRead }); using (scope) { using (var oCtx = new DatabaseContext()) { var objSecuential = (from a in oCtx.Secuential where a.i_TableId == pintTableId && a.i_NodeId == pintNodeId select a).SingleOrDefault(); // Actualizar el campo con el nuevo valor a efectos de reservar el ID autogenerado para evitar colisiones entre otros nodos if (objSecuential != null) { objSecuential.i_SecuentialId = objSecuential.i_SecuentialId + 1; } else { objSecuential = new SecuentialBE(); objSecuential.i_NodeId = pintNodeId; objSecuential.i_TableId = pintTableId; objSecuential.i_SecuentialId = 0; oCtx.Secuential.Add(objSecuential); } int rows = oCtx.SaveChanges(); value = objSecuential.i_SecuentialId.Value; } scope.Complete(); return(value); } }