public Guid Save(IItem item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var actualItem = item as DefaultItem; if (actualItem == null) { throw new ArgumentException($"Unknown item type: '{item.GetType().Name}'", nameof(item)); } var guid = provider.Upsert(actualItem.Type.Name, actualItem.GetEntity()); if (item.Children.Count > 0) { saveChildren(item); } return(guid); }