public void Actualizar(Modelo.Producto producto)
        {
            foreach (Modelo.Precio precio in producto.Precios)
            {
                _context.Entry(precio).State = EntityState.Modified;
            }

            _context.Producto.Attach(producto);
            _context.Entry(producto.Proveedor).State    = EntityState.Unchanged;
            _context.Entry(producto.Categoria).State    = EntityState.Unchanged;
            _context.Entry(producto.Subcategoria).State = EntityState.Unchanged;
            _context.Entry(producto).State = EntityState.Modified;
            _context.SaveChanges();
        }
        public void Guardar(Modelo.Producto producto)
        {
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                if (_context.Producto.Any(x => x.Codigo.ToUpper() == producto.Codigo.ToUpper()))
                {
                    throw new NegocioException($"El código de producto {producto.Codigo} ya está en uso. Por favor, ingrese otro código de producto.");
                }

                _context.Entry(producto.Proveedor).State    = EntityState.Unchanged;
                _context.Entry(producto.Categoria).State    = EntityState.Unchanged;
                _context.Entry(producto.Subcategoria).State = EntityState.Unchanged;

                _context.Producto.Add(producto);
                _context.SaveChanges();

                producto.CargarCodigoBarras(producto.Id);
                _context.SaveChanges();

                dbContextTransaction.Commit();
            }
        }