ODataClient SaveChangeAsync抛出AggregateException,即使某些更新成功也不会返回任何内容

时间:2019-12-02 20:30:02

标签: c# .net-core odata

如果多个实体具有更新,则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();

0 个答案:

没有答案