当尝试使用RowKey中的非法字符(例如'/')保存对象时,调用时会抛出异常
_tableServiceContext.AddObject(tableName, myEntity);
我收到一个System.Data.Services.Client.DataServiceRequestException,信息“超出范围”,这很容易被阻止(通过阻止或检查非法字符)。
我现在的问题是,如何从这种状态中恢复?在发生这样的错误之后,所有后续的AddObject调用都会失败,大概是因为“损坏的对象”仍然属于上下文。
因此,我正在寻找“UndoChanges”的可能性。
感谢任何提示,谢谢。
P.S .: 我正在寻找一种更好的方法,而不是抛弃上下文或从上下文中删除对象......
答案 0 :(得分:1)
最好的方法可能是将实体与上下文分离。如果由于某种原因这不是一个选项,您可以使用SaveChangesOption.ContinueOnErrors
设置重试保存。例如,
_tableServiceContext.SaveChangesWithRetries(SaveChangesOptions.ContinueOnError);
这基本上一次应用所有更新,而不是批量应用。请注意,它将忽略所有发生的错误,而不仅仅是来自非法实体的错误。