实体框架更改跟踪器



当HasChanges被更改时,EF6 ChangeTracker中是否有任何东西可以用来创建事件?

其基本用途是在上下文注册更改时,打开视图模型上的"保存"按钮。

我觉得这不对。您的视图应该通知您的视图模型更改(通常通过将视图绑定到实现INotifyPropertyChanged的视图模型)。然后,您的视图模型可以暴露出直接保存的需要,而无需进入数据层。像ReactiveUI这样的库可以帮助实现这一点。

然而,如果你想变得邪恶(是的,我在这一点上有意见!),你可以在计时器上检查它。我能想到这样做的唯一原因是,你正在跨视图共享你的上下文,但这仍然是一个非常糟糕的原因:

var hasChanges = Observable.Interval(TimeSpan.FromSeconds(0.5))
                          .Select(_ => DbChangeTracker.HasChanges);
hasChanges.ObserveOnDispatcher.Subscribe(i => /* logic to set save button state */);

如果按照此路线,您还需要在退出视图之前强制检查DbChangeTracker.HasChanges,以避免丢失未保存的更改。

相关内容

  • 没有找到相关文章

最新更新