Ejemplo n.º 1
0
        // ServiceUpdateMethod.tt
        /// <summary>
        /// Actualiza una determinada entidad Categoria.
        /// </summary>
        /// <param name="categoriaDto">
        /// DTO que contiene la información de la entidad que se va a actualizar.
        /// </param>
        /// <returns>
        /// Es <b>true</b> si la actualización ha sido correcta; en caso contrario <b>false</b>.
        /// </returns>
        public bool Update(CategoriaDto categoriaDto)
        {
            #region preconditions
            // Comprobar el DTO de entrada.
            Guard.ArgumentIsNotNull(
                categoriaDto,
                string.Format(
                    FrameworkResource.DataTransferObjectIsNull,
                    "Categoria"));
            // en una actualización no comprobamos los campos mandatory.
            #endregion

            try
            {
                // Creamos el repositorio de la entidad.
                ICategoriaRepository repo = ApplicationLayer.IocContainer.Resolve <ICategoriaRepository>();

                // Obtener y comprobar validez de la inserción a modificar.
                Categoria entity2Update = repo.GetFilteredElements(t => t.Id == categoriaDto.Id).Single();
                Guard.ArgumentIsNotNull(
                    entity2Update,
                    string.Format(
                        FrameworkResource.CanNotUpdateInexistenceEntity,
                        "Categoria"));
                // Comprobar duplicidades;

                // Actualización de la entidad.
                // Datos mandatory

                // asignación de Datos no mandatory con ciclo de vida variable, no se incluyen aquellas propiedaes constantes o derivadas
                entity2Update.Name = categoriaDto.Name;     // property.AutoProperty = True; property.OnlyGetProperty = False

                // igualmente hemos de mapear las entidades emparentadas.
                if (!entity2Update.CanBeSaved())
                {
                    return(false);
                }
                repo.Modify(entity2Update);

                // Confirmamos la transacción.
                this.Commit();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            // Devolvemos el resultado.
            return(true);
        }