【发布时间】:2023-03-23 09:40:02
【问题描述】:
我需要在不同时间在我的实体上下文中保存多个表。如果其中一种保存更改方法运行但另一个表的另一种保存更改方法失败,我正在尝试将数据库恢复到其原始状态。
为了实现这一点,我尝试创建两个实体上下文,如下所示。我将更改的第一个实体,并在需要时在不同的表上调用 SaveChanges 方法。但是,如果发生错误,我会尝试使用第二个实体上下文来覆盖到目前为止对数据库所做的任何更改。
有没有办法用我在程序开始时创建的“originlEntityValues”上下文覆盖数据库值?
下面的代码示例希望能更清楚地解释它
我在程序开始时实例化了两个实体上下文(它们继承自 DbContext)。我将对其进行更改。另一个我正在尝试使用以防发生错误以恢复更改
SystemEntities entity = new SystemEntities();
SystemEntities originalEntityValues = new SystemEntities();
在整个程序中,我需要单独保存表,因为我需要获取它们生成的 Id 值并在其他实体类中使用它们,然后我继续调用保存更改,所以我调用这样的代码
entity.Contact.SaveChanges();
....
entity.Transact.SaveChanges();
如果第一次保存更改运行良好,但第二次导致错误,我正在尝试使用 “originalEntityValues”覆盖以前的保存更改调用,以便在程序启动时发生意外错误时我的数据库具有相同的值。
catch{
// refresh the database with the originalEntityValues context?
}
任何帮助都非常感谢提前感谢。
【问题讨论】:
标签: entity-framework dbcontext