Example #1
0
 public static int GrabarDetalle<T>(this IEnumerable<T> lista, string expresionDelete, params object[] parametros) where T : Instrumental1
 {
     int i = 0; int x = 0;
     using (ispDB db = new ispDB())
     {
         try
         {
             db.BeginTransaction();
             db.GetTable<T>().Where(expresionDelete, parametros).Delete();
             int total = lista.Count();
             for (int ix = 0; ix < total; ix++)
             {
                 T objeto = lista.ElementAt(ix);
                 x = db.Insert<T>(objeto);
                 if (i == 0)
                     i = x;
             }
             db.CommitTransaction();
         }
         catch (Exception)
         {
             i = 0;
             db.RollbackTransaction();
             throw;
         }
     }
     return i;
 }
Example #2
0
        /// <summary>
        /// Graba una lista de registros que generalmente proviene de un DataSource tipo Object
        /// </summary>
        /// <param name="lista">De tipo BindingListView contenedora de los registros</param>
        /// <returns>Numero generado para PK en Insert o registros afectados en Update</returns>
        public int Grabar(IEnumerable <sucursal> items)
        {
            int i = 0; int n = 0;

            items = items.Where(x => x.Modificado == true).ToList();
            if (items.Count() == 0)
            {
                return(0);
            }
            using (ispDB db = new ispDB())
            {
                try
                {
                    db.BeginTransaction();
                    n = db.sucursales.Max(x => (int?)x.id) ?? 1;
                    foreach (var item in items)
                    {
                        if (item.id == 0)
                        {
                            item.id = ++n;
                        }
                        i = db.InsertOrReplace(item);
                        db.telefonossucursales.Where(x => x.idsucursal == item.id).Delete();
                        foreach (var item1 in item.fktelefonossucursal)
                        {
                            if (item1.idsucursal == 0)
                            {
                                item1.idsucursal = item.id;
                            }
                            db.Insert(item1);
                        }
                    }
                    db.CommitTransaction();
                }
                catch (Exception)
                {
                    db.RollbackTransaction();
                    throw;
                }
            }
            if (i == 0)
            {
                throw new Exception("Error de concurrencia, por favor vuelva a realizar la transaccion.");
            }
            return(i);
        }