public void Update(Model.HierarchyStructure entity) { using (var context = new ImobeNetContext()) { var hierarchyStructureRepository = new BaseRepository <Model.HierarchyStructure>(context); hierarchyStructureRepository.Update(entity); hierarchyStructureRepository.SaveChanges(); } }
public void Update(Model.HierarchyStructure entity, ICollection <HierarchyStructureCulture> hierarchyStructureCulture, int[] vinculatedStruture) { this.InsertUpdate(entity, hierarchyStructureCulture, vinculatedStruture, Enums.ActionType.Update); }
public void InsertUpdate(Model.HierarchyStructure entity, ICollection <HierarchyStructureCulture> hierarchyStructureCulture, int[] vinculatedStructure, Enums.ActionType actionType) { using (var context = new ImobeNetContext()) { using (TransactionScope scopeOfTransaction = new TransactionScope()) { try { var hierarchyStructureRepository = new BaseRepository <Model.HierarchyStructure>(context); var hierarchyStructureCultureRepository = new BaseRepository <HierarchyStructureCulture>(context); if (actionType == Enums.ActionType.Insert) { hierarchyStructureRepository.Insert(entity); } else if (actionType == Enums.ActionType.Update) { hierarchyStructureRepository.Update(entity); } context.SaveChanges(); #region [Culture] var structureCultures = (from p in context.HierarchyStructureCulture where p.IDHierarchyStructure == entity.IDHierarchyStructure select p); //Deletando variacoes de idioma if (structureCultures != null && structureCultures.Count() > 0) { foreach (var structureCulture in structureCultures) { hierarchyStructureCultureRepository.Delete(structureCulture); } context.SaveChanges(); } //Inserindo variacoes de idioma if (hierarchyStructureCulture != null && hierarchyStructureCulture.Count() > 0) { foreach (var item in hierarchyStructureCulture) { item.IDHierarchyStructure = entity.IDHierarchyStructure.Value; hierarchyStructureCultureRepository.Insert(item); } context.SaveChanges(); } #endregion #region [Children Structure] var childStructures = (from p in context.HierarchyStructure where p.IDHierarchyStructureParent == entity.IDHierarchyStructure select p); //Desvinculando os filhos if (childStructures != null && childStructures.Count() > 0) { foreach (var childStructure in childStructures) { childStructure.IDHierarchyStructureParent = null; hierarchyStructureRepository.Update(childStructure); } context.SaveChanges(); } //Vinculando novos filhos if (vinculatedStructure != null && vinculatedStructure.Count() > 0) { foreach (var item in vinculatedStructure) { foreach (var updateItem in (from hs in context.HierarchyStructure where vinculatedStructure.Contains(hs.IDHierarchyStructure.Value) select hs)) { updateItem.IDHierarchyStructureParent = entity.IDHierarchyStructure; updateItem.ModifiedBy = ServiceContext.ActiveUserName; updateItem.ModifyDate = DateTime.Now; hierarchyStructureRepository.Update(updateItem); } context.SaveChanges(); } } #endregion scopeOfTransaction.Complete(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } catch (Exception ex) { throw ex; } finally { scopeOfTransaction.Dispose(); } } } }