Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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);
            }
        }