连接断开时如何使用Entity Framework将更改保存到磁盘,以便下次应用启动时传播更改

时间:2018-12-30 19:38:45

标签: c# database entity-framework tsql

是否可以继续使用Entity Framework进行“更改”?

例如,我执行更新查询,然后连接失败,关闭应用程序,然后明天我希望它在恢复连接时执行更新查询。

使用Entity Framework 6可以做到吗?

2 个答案:

答案 0 :(得分:0)

您可以创建自己的ChangeTracker,就像在tutorial中那样,它将所有更改保存到文件中。解析文件以供以后使用可能会很棘手。

另一种选择是使用retry logic,希望连接问题只是个小问题

答案 1 :(得分:0)

我认为ZorgoZ是正确的,这个答案不能解决您的实际问题,但是我认为这是您的实际问题(请参阅XY problem):您无法保存一些更改(从业务角度考虑) ),并且您希望以后可以重试保存它们,而不必进行某些EF更改,而这些更改要稍后保存。

一种方法是存储触发更改的业务信息,然后重试整个流程:

  • 定义某种形式的存储在文件,独立存储等中的队列(取决于您的技术)
  • 您的更新流应在包含所有相关信息和状态(例如已排队,保存错误等)的队列中保留某种记录/对象
  • 尝试更新。如果失败,您可以进行状态更新(例如保存错误)
  • 用户关闭应用程序
  • 随后,用户打开应用程序,查看队列项目状态(项目1保存成功,项目2保存错误等)

除EF技术问题外,此实现还允许对流程进行更改,包括EF保存更改之外的内容(例如,检查某些外部API)并完全抽象掉数据访问层(EF更改序列化实现有很大的机会依赖于某些EF详细信息。)

我还感觉到上下文信息序列化(例如某种形式的数据)比EF上下文更改序列化更容易实现。