如果多个实体具有更新,则SaveChangesAsync对每个实体执行单独的调用。但是,当返回400时,它将停止处理并引发错误。内部异常是来自Web服务的JSON响应的字符串表示形式。发生这种情况时,以前的实体已更新,但是该信息似乎丢失了。
它不仅应该继续通过错误,而且还应返回包含ChangeOperationResponse集合的DataServiceResponse。每个ChangeOperationResponse都包含一个StatusCode和Error属性。我希望未能将其StatusCode设置为400并将Error属性设置为一个。为什么这没有发生?
这是一些伪代码
var client = new DefaultContainer(new Uri("https://foo.bar/service"));
var obj1 = new TestObject {
ID = 1,
Name = "TEST",
Description = "TEST"
};
client.AttachTo(typeof(obj1).Name, obj1);
client.UpdateObject(obj1);
var obj2 = new TestObject {
ID = 4000,
Name = "ERROR",
Description = "ERROR"
}
client.AttachTo(typeof(obj2).Name, obj2);
client.UpdateObject(obj2);
var task = client.SaveChangesAsync(SaveChangesOptions.ContinueOnError);
task.Wait();
var results = task.Result
.Select(r => r as ChangeOperationResponse)
.ToList();