public Boolean Delete(EntidadNegocio.Entidades.Producto _producto)
        {
            Int32    id = _producto.ID; Boolean resul = false;
            Producto productoToDelete = db.ProductoSet.First(b => b.ID == id);
            String   IDTipo = ""; String IDMarca = ""; String IDModelo = ""; String IDCategoria = "";

            productoToDelete.ID          = _producto.ID;
            productoToDelete.Codigo      = _producto.Codigo;
            productoToDelete.Descripcion = _producto.Descripcion;
            if (_producto.Status == EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo)
            {
                productoToDelete.Estatus = 1;
            }
            else
            {
                productoToDelete.Estatus = 0;
            }

            Int32 iIDTipo = _producto.IDTipo;

            if (iIDTipo == 0)
            {
                TipoController ctrlTipo = new TipoController();
                iIDTipo = ctrlTipo.UltimoID();
            }
            else
            {
                iIDTipo = _producto.IDTipo;
            }
            productoToDelete.IDTipo = iIDTipo;
            IDTipo = iIDTipo.ToString();

            Int32 iIDMarca = _producto.IDMarca;

            productoToDelete.IDMarca = iIDMarca;
            IDMarca = iIDMarca.ToString();

            Int32 iIDModelo = _producto.IDModelo;

            productoToDelete.IDModelo = iIDModelo;
            IDModelo = iIDModelo.ToString();

            Int32 iIDCategoria = _producto.IDCategoria;

            productoToDelete.IDCategoria = iIDCategoria;
            IDCategoria = iIDCategoria.ToString();

            //valido si la Producto tiene alquiler
            if (db.AlquilerSet.FirstOrDefault(a => a.IDProducto == id) != null)
            {
                MessageBox.Show(String.Format("Esta intentando Borrar una Producto que tiene alquiler."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    if (db.Connection.State != System.Data.ConnectionState.Open)
                    {
                        db.Connection.Open();
                    }

                    DbTransaction dbTransaction = db.Connection.BeginTransaction();

                    // Delete
                    db.DeleteObject(productoToDelete);
                    db.SaveChanges();
                    dbTransaction.Commit();
                    // Si la transaccion es exitosa enviamos true
                    resul = true;
                }
                catch (Exception ex)
                {
                    HandleException excepcion = new HandleException();
                    String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                    excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                    resul = false;
                }
            }

            return(resul);
        }
        public Boolean Edit(EntidadNegocio.Entidades.Producto _producto)
        {
            Int32    id = _producto.ID; Boolean resul = false;
            Producto productoToUpdate = db.ProductoSet.First(b => b.ID == id);
            String   IDTipo = ""; String IDMarca = ""; String IDModelo = ""; String IDCategoria = "";

            productoToUpdate.ID          = _producto.ID;
            productoToUpdate.Codigo      = _producto.Codigo;
            productoToUpdate.Descripcion = _producto.Descripcion;
            if (_producto.Status == EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo)
            {
                productoToUpdate.Estatus = 1;
            }
            else
            {
                productoToUpdate.Estatus = 0;
            }

            Int32 iIDTipo = _producto.IDTipo;

            if (iIDTipo == 0)
            {
                TipoController ctrlTipo = new TipoController();
                iIDTipo = ctrlTipo.UltimoID();
            }
            else
            {
                iIDTipo = _producto.IDTipo;
            }
            productoToUpdate.IDTipo = iIDTipo;
            IDTipo = iIDTipo.ToString();

            Int32 iIDMarca = _producto.IDMarca;

            productoToUpdate.IDMarca = iIDMarca;
            IDMarca = iIDMarca.ToString();

            Int32 iIDModelo = _producto.IDModelo;

            productoToUpdate.IDModelo = iIDModelo;
            IDModelo = iIDModelo.ToString();

            Int32 iIDCategoria = _producto.IDCategoria;

            productoToUpdate.IDCategoria = iIDCategoria;
            IDCategoria = iIDCategoria.ToString();

            if (!String.IsNullOrEmpty(IDTipo))
            {
                productoToUpdate.Tipo = db.TipoSet.FirstOrDefault(c => c.ID == iIDTipo);
            }

            if (productoToUpdate.Tipo == null)
            {
                MessageBox.Show(String.Format("El número de IDTipo {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDMarca))
            {
                productoToUpdate.Marca = db.MarcaSet.FirstOrDefault(c => c.ID == iIDMarca);
            }

            if (productoToUpdate.Marca == null)
            {
                MessageBox.Show(String.Format("El número de IDMarca {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDModelo))
            {
                productoToUpdate.Modelo = db.ModeloSet.FirstOrDefault(c => c.ID == iIDModelo);
            }

            if (productoToUpdate.Modelo == null)
            {
                MessageBox.Show(String.Format("El número de IDModelo {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDCategoria))
            {
                productoToUpdate.Categoria = db.CategoriaSet.FirstOrDefault(c => c.ID == iIDCategoria);
            }

            if (productoToUpdate.Categoria == null)
            {
                MessageBox.Show(String.Format("El número de IDCategoria {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            if (db.Connection.State == System.Data.ConnectionState.Closed)
            {
                db.Connection.Open();
            }

            DbTransaction dbTransaction = db.Connection.BeginTransaction();

            try
            {
                // Guardar y confirmar.
                db.SaveChanges();
                dbTransaction.Commit();
                // Si la transaccion es exitosa enviamos true
                resul = true;
            }
            catch (Exception ex)
            {
                dbTransaction.Rollback();
                HandleException excepcion = new HandleException();
                String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                resul = false;
            }

            return(resul);
        }