【问题标题】:ODATA EXPAND not working properlyODATA EXPAND 无法正常工作
【发布时间】:2023-04-08 07:48:01
【问题描述】:

我有一个网址过滤器,例如:t1?$filter=ID eq 1&$expand=t2/t3/t4/t5/t6

现在,当我使用上下文将该查询作为第一个查询运行时,我得到了一切!当我从另一个页面运行相同的查询并且它是在使用相同对象上下文的前一个查询之后运行的第二个查询时,查询在 t3 停止扩展!即使对象 id 明显存在,该对象仍为 null。数据存在!所以这里有一些非常奇怪的东西。注意:我使用的是单例对象上下文工厂类,因此每个页面都会实例化自己的对象上下文以用于执行 CRUD 操作。

【问题讨论】:

    标签: c# wcf-data-services odata


    【解决方案1】:

    假设您使用的是 WCF DS 客户端库(DataServiceContext 和相关类),那么这很可能是由于客户端上的 DataServiceContext.MergeOption 设置造成的。默认值为 AppendOnly,这意味着如果给定实体的实例已经存在于客户端,来自服务器的新数据将不会更新它(这是为了防止查询覆盖客户端上可能进行的更改)。您可以将 MergeOption 更改为 OverwriteChanges,然后将使用服务器值。 (它甚至适用于导航属性,这就是为什么扩展似乎不起作用,但实际上服务器确实将数据发送回客户端,但客户端将其丢弃)。

    【讨论】:

    • 有趣。我会去上班并立即尝试。我假设这个选项是在服务的初始化中,它配置每个实体的 CRUD 权限?
    • 成功了!显然我需要熟悉这些选项
    猜你喜欢
    • 2018-10-09
    • 1970-01-01
    • 2013-07-20
    • 2014-06-06
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多