public async override Task <bool> SaveChangesAsync(CancellationToken tkn = default(CancellationToken)) { foreach (var item in NewUnsavedItems) { try { if (!await AddItem(item, tkn)) { return(false); } } catch (Exception ex) { return(LogError($"AddItem: [nid:{item?.nid}] «{item?.title}»", ex)); } } NewUnsavedItems.Clear(); foreach (var item in ChangedUnsavedItems) { try { if (!await UpdateItem(item, tkn)) { return(false); } } catch (Exception ex) { return(LogError($"UpdateItem: [nid:{item?.nid}] «{item?.title}»", ex)); } } ChangedUnsavedItems.Clear(); return(true); }
protected void StartTrackingChanges() { foreach (var item in _list) { item.PropertyChanged += (s, e) => { if (!ChangedUnsavedItems.Has(x => x.nid == item.nid)) { ChangedUnsavedItems.Add(item); } }; } }