Odata DataContext仅更新已修改的属性

时间:2018-03-03 19:16:10

标签: c# entity-framework rest odata

经过一番谷歌搜索,你们现在必须提供帮助。

我正在使用 OData v4 Client Code Generator

消费Odata服务

一切都很好,(几乎)应该如此。 现在我需要更新我之前查询和修改过的实体。

我面临的斗争是,我必须进行部分更新,因为此实体中有一些属性不得更改。如果端点检测到这些道具上的更改,则会抛出异常。

前段时间我了解到,我应该可以进行这样的部分更新,互联网上有很多关于如何做的好建议。不幸的是,所有这些建议都是指EF-6-DataContext而不是Odata-DataContext。

此外,我没有太多代码可以展示,但是

_container.UserSystem.Context.ChangeState(e,EntityStates.Modified);
var resp = _container.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

正如您可能已经注意到的那样,即时设置我不允许的SaveChangesOptions.PostOnlySetProperties(不在DataServiceQueries上工作)。我已经尝试了这个,SaveChangesOptions.PostOnlySetProperties面对上面提到的例外。

问题

我如何判断血腥Microsoft.OData.Client.DataServiceContext执行部分更新而不是更新整个实体?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。

显然,实现这一目标的唯一方法隐藏在2014年的this文件中,此后一切都没有改变。

不幸的是,必须使用1: User visit the website 2: Koa query the results for the the sidebar (route: /) 3. User see the sidebar on the webpage 4: User click on a blog (new page route: /blog/) 5: Koa share the result of the sidebar (Point 2) 6: User see the sidebar on the webpage 来获取已更新的已修改的属性。

DataServiceCollection

就我个人而言,我发现这是一种怪异而且非常糟糕的方式,但似乎没有别的办法。