public static void Save(ItemModel itemModel) { Item entity = getEntityByModel(itemModel); string result = string.Empty; if (entity.IsValid()) { if (itemModel.Id > 0) { result = service.Update(entity); } else { result = service.Insert(entity); } if (!string.IsNullOrEmpty(result)) { var savedDetail = GetItemWarehouses(result); if (savedDetail.Count() > itemModel.ItemWarehouses.Count()) { var tobeDeleted = savedDetail.Take(savedDetail.Count() - itemModel.ItemWarehouses.Count()); foreach (var item in tobeDeleted) { service.DeleteItemWarehouse(item.Id); } savedDetail = GetItemWarehouses(result); } foreach (var detail in itemModel.ItemWarehouses) { ItemWarehouse detailEntity = getEntityByModel(detail, savedDetail.Count()); if (detailEntity.IsValid()) { detailEntity.ItemId = Convert.ToInt64(result); if (savedDetail.Count() > 0) { detailEntity.Id = savedDetail.FirstOrDefault().Id; savedDetail.Remove(savedDetail.FirstOrDefault(rec => rec.Id == detailEntity.Id)); service.Update(detailEntity); } else { service.Insert(detailEntity); } } } } } }