【发布时间】:2017-09-01 00:26:22
【问题描述】:
我正在运行一个进程,该进程会影响用户数据库中的许多记录。我只想应用所有更改或不应用所有更改,具体取决于所有更改的结果。 (例如,如果其中一个子流程失败,则总体上不应发生任何更改)。我还想将通知保存到数据库中,以提醒用户进程的结果(例如,如果子进程失败,则会发出通知,让用户知道由于 x 原因没有进行任何更改)。
我能想到的最好方法是在添加更改跟踪器时分离所有条目,然后在成功或失败时创建通知并保存更改,然后在应用所有更改时我可以遍历更改跟踪器并重置Entity State 并再次保存更改。
我使用这种方法面临的问题是,在重置Entity State 时,我不知道实体是Added 还是Modified。我可以实现自己的更改跟踪器来存储实体的先前状态,但这会使 EF 的更改跟踪器变得多余。
我也只能在保存实体时添加所有实体的权限,但这需要将许多对象传递到嵌套方法的链中直到结束。
有没有人有更好的建议,或者使用提到的其中一种技巧来解决这个问题是标准做法吗?
【问题讨论】: