private void ConfigureServices() { DbObservable <AlarmEntity, LocalDbContext> .FromInserted() .Merge <IEntry>(DbObservable <AlarmEntity, LocalDbContext> .FromDeleted()) .Merge(DbObservable <AlarmEntity, LocalDbContext> .FromUpdated()) .Cast <object>() .Merge(DbObservable <LessonEntity, LocalDbContext> .FromInserted()) .Merge(DbObservable <LessonEntity, LocalDbContext> .FromUpdated()) .Merge(DbObservable <LessonEntity, LocalDbContext> .FromDeleted()) .TakeUntil(_destroySubject) .ObserveOnDispatcher(DispatcherPriority.Background) .Subscribe(_ => StartTimer()); StartTimer(); StartBackupService(); }
public IObservable <IEnumerable <DbChange <T> > > ChangeListener <T>(int delayMs = 1000) where T : class { var changeSource = Observable.Merge ( DbObservable <GeneralDbContext> .FromInserted <T>() .Select(entry => new DbChange <T>(entry.Entity, ChangeReason.Insert)), DbObservable <GeneralDbContext> .FromDeleted <T>() .Select(entry => new DbChange <T>(entry.Entity, ChangeReason.Delete)), DbObservable <GeneralDbContext> .FromUpdated <T>() .Select(entry => new DbChange <T>(entry.Entity, ChangeReason.Update)) ); var throttle = changeSource.Throttle(TimeSpan.FromMilliseconds(delayMs)); return(changeSource.Buffer(throttle)); }