private GuidKey recursiveUpdateOrInsert(DTOCategoria categoria) { if (!_context.tabCategorie.Any(x => x.ID == categoria.ID)) { categoria.ID = new Guid(); } var tab = new tabCategorie(); tab.ID = categoria.ID; tab.Nome = categoria.Nome; if (categoria.CategoriaPadre != null) { tab.IdCategoriaPadre = categoria.CategoriaPadre.ID; } _context.tabCategorie.AddOrUpdate(tab); if (categoria.CategorieFiglie != null) { foreach (var figlia in categoria.CategorieFiglie) { figlia.CategoriaPadre = categoria; recursiveUpdateOrInsert(categoria); } } return(categoria); }
protected DTOCategoria mapTable(tabCategorie categorie, bool includiPadre, bool includiFiglie) { if (categorie == null) { return(null); } var ret = new DTOCategoria(); ret.ID = categorie.ID; ret.Nome = categorie.Nome; if (includiPadre && categorie.IdCategoriaPadre.HasValue) { ret.CategoriaPadre = GetByID(new GuidKey { ID = categorie.IdCategoriaPadre.Value }); } if (includiFiglie) { ret.CategorieFiglie = new List <DTOCategoria>(); foreach (var det in categorie.CategorieFiglie) { ret.CategorieFiglie.Add(mapTable(det, false, true)); } } return(ret); }