【发布时间】:2020-06-27 20:42:39
【问题描述】:
我有一个 MVC 应用程序,每个请求创建一次 DBContext。
在此请求中,我尝试保存订单列表
...
foreach (var order in orders)
{
SaveOrder(order);
}
public SaveOrder(Order order)
{
_context.Orders.Add(order);
_context.SaveChanges();
}
...
但是,如果列表中的第一个订单抛出异常,那么其余的都不会保存。
我已经尝试捕获异常然后使用
_context.Orders.Remove(order)
但在 DB 上下文中下一次调用 SaveChanges() 时,原始异常仍然会触发。
有些文章似乎建议为每个操作使用新的上下文,并在 using 语句中进行包装——但这并不昂贵(它不会每次都创建一个新连接吗?)
这样做的正确方法是什么?有没有办法删除所有待处理的更改?
谢谢
【问题讨论】:
标签: c# entity-framework