问题标签 [wcf-data-services-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1272 浏览

asp.net-web-api - 如何在 Web API OData 中发布具有导航关系的实体?

我将 ASP.NET Web API 与 OData 一起使用。我正在尝试发布一个与父级有关系的子实体父级已经存在)。当我发布实体(使用 WCF 数据服务客户端和 SetLink)时,我可以通过 Fiddler 看到它正在将 a 添加到请求的正文中。这个完全相同的请求适用于我们的 WCF 数据服务版本的服务(我们正在迁移到 Web API)。但是,这似乎没有将任何内容转换为 Web API 中控制器上的 Post 方法。<link...href=[address of parent]>

将孩子发布到 ChildController 时,如何从ChildController上的 Post 操作访问父 ID ?我知道请求中有值,但我怎样才能获得这个值?没有父级就无法创建子级。我需要修改控制器动作签名吗?也许我可以在某处使用某些属性?从 API 的角度来看,如果可能的话,我想避免将 ParentId 直接添加到子实体中。

编辑:这是我的要求。我更改了一些名称以保护无辜者(替换主机名和带有父/子的实体名称):

0 投票
3 回答
7109 浏览

odata - 从 .NET OData 4 客户端调用嵌套 Expand() 的正确方法

问题

在 Web API 上的 OData 4 服务中,从 .NET 客户端调用嵌套 $expand 的正确方法是什么?我们正在使用OData 客户端生成器。回到之前的 WCF 数据服务,我们可以调用 OData 3 服务.Expand("Customers/Orders")。在带有 OData 4 的 Web API 中,如果您尝试,我们将无法再这样做并收到以下信息.Expand("Customers/Orders")

URI 中指定的查询无效。找到了一个遍历多个导航 > 属性的路径。请改写查询,使每个展开路径仅包含类型 >segments 和导航属性。

解决方法

我们可以通过调用 expand 来解决这个问题.Expand("Customers($expand=Orders)"):在非嵌套的 $expand 场景中,我喜欢这样的 lambda 支持.Expand(d => d.Customers)。.NET OData 4 客户端中是否有适当的方法来调用嵌套扩展而没有不幸的魔术字符串.Expand("Customers($expand=Orders)")?如果没有,是否有像“客户/订单”这样更简洁的字符串模式可以使用?谢谢。

0 投票
1 回答
1072 浏览

odata - .NET OData 4 客户端支持压缩

问题

我在我们的自托管 OWIN/Katana Web API OData 4 服务中添加了对 http 压缩的支持,但我看不到如何在 .NET 客户端中支持压缩。我正在使用 OData 库 v6.5.0,我需要在客户端(OData v4 客户端代码生成器)中支持压缩/解压缩。我正在通过 ActionFilter 使用 Deflate 编码进行压缩。正如通过 Fiddler 确认的那样,一切都在服务器上正确压缩,但我不知道如何配置客户端以支持这一点,因为 OData 客户端使用请求和响应管道,而不是曾经支持这种场景的现已失效的 WritingRequest 和 RecievingResponse 事件

尝试

通过实验,我发现我可以ReceivingResponse在我的DataServiceContext然后调用 ReceivingResponseEventArgs.ResponseMessage.GetStream() 但我不知道如何正确覆盖消息内容。如果我在流上 CopyTo(),我会在 Microsoft.OData.Core.ODataMessageReader.DetectPayloadKind() 处获得空引用异常。我认为这是因为流被读取到末尾并且位置需要设置回零,但我不能这样做,因为流在​​设置位置时也会引发异常,因为它说它不支持搜索。我认为这仅仅是因为流是只读的。即使我可以复制流以成功解压,如何使用解压后的内容修改响应消息内容?我在 RequestPipeline 或 ResponsePipeline 中根本看不到任何挂钩。澄清,我想将响应消息内容解压,然后设置为稍后发生的具体化,我该怎么做?如何将压缩请求也发送到 OData 服务的额外功劳。谢谢!

0 投票
1 回答
129 浏览

c# - LoadAsync 在带有 WCF 数据服务的 windows phone 8 中不起作用

我和我的朋友刚刚创建了一个 WCF 数据服务,并希望通过 Windows Phone 8 客户端使用它。对于 WCF 数据服务部分,OData 被证明可以与一个为数据库执行 CRUD 的 windows 窗体项目一起工作。

所以为了让 WP8 使用 WCF 数据服务,我们按照教程一步一步下载了 MSDN 教程 http://msdn.microsoft.com/en-us/library/windows/apps/hh394007(v=vs ) 上的示例代码.105).aspx

但是,示例不起作用。手机上没有显示数据库中的数据。

我们发现 Customers.LoadAsync(Query) 下面的函数不会在 http://services.odata.org/Northwind/Northwind.svc/Customers() 中加载public void LoadDataXML数据MainViewModel Class

我们修改了 OnCustomerLoaded 函数以显示错误消息(如果有):

我们收到以下错误:

LoadAsync 方法出错

我们正在使用 VS2012 高级版,使用 OData 5.0.0 创建了带有数据绑定项目的 Windows Phone 8。

我们不得不承认这个错误可能不是问题的根本原因,但我们无法弄清楚,因为我们是新手。如果有人能指出如果这不是错误根源,我们应该改变什么以使示例正常工作,我们将不胜感激。

非常感谢!!

0 投票
2 回答
290 浏览

.net - DataServiceContext 更新错误

我有以下带注释的模型

由 WCF 数据服务使用实体框架公开为 v3 odata。当我尝试使用 DataServiceContext 更新 TypeA 时,例如

我在服务中收到一个 DbEntityValidationException,说明“需要 B 字段”

请求“MERGE /TestUpdateService/TestUpdateService.svc/theATypes(1) HTTP/1.1”的正文包含 AValue 属性更改,但不包含到属性 B 的任何链接信息(这是我对验证原因的猜测服务失败)。我是否缺少有关更新数据服务的信息?

0 投票
0 回答
144 浏览

wcf - 使用 WCF 数据服务而不添加服务引用

如何在不添加服务引用的情况下使用 WCF 数据服务。

对于普通的 WCF 服务,我们使用共享契约并在运行时创建代理来调用服务。在数据服务的情况下是否有类似的概念?

0 投票
4 回答
2773 浏览

c# - Entity Framework 6 - DataServiceContext Detect 有变化

我有一个运行实体框架 6 的 WCF 服务器应用程序。

我的客户端应用程序通过 DataServiceContext 使用来自服务器的 OData,并且在我的客户端代码中,我希望能够在上下文中调用 HasChanges() 方法以查看其中的任何数据是否已更改。

我尝试使用以下扩展方法:

但它总是返回 false,即使它正在跟踪的实体确实发生了变化。

例如,假设我有一个名为 Customer 的跟踪实体,以下代码总是在调用 SaveChanges() 之前返回。

如果我注释掉if not ctx.HasChanges() 然后返回代码行,则更改已成功保存,因此我很高兴实体已收到更改并能够保存它。

似乎上下文正在跟踪更改只是我无法从我的代码中确定这一事实。

谁能告诉我如何确定 DataServiceContext 上的 HasChanges?

0 投票
1 回答
258 浏览

odata - 使用 WCF 数据服务 EF,无法 SaveChange()

我正在使用 WCF 数据服务,如下所示:

但打电话后SaveChange()我收到以下错误:

服务器在处理请求时遇到错误。异常消息是“用于操作“ProcessRequestForMessage”的传入消息(带有命名空间“ http://tempuri.org/ ”的合同“IRequestHandler” )包含无法识别的 http 正文格式值“Xml”。预期的正文格式值为“原始”。这可能是因为尚未在绑定上配置 WebContentTypeMapper。有关详细信息,请参阅 WebContentTypeMapper 的文档。有关更多详细信息,请参阅服务器日志。

我的 WCF 数据服务如下:

我还实现并配置WebContentTypeMapper为绕过提到的错误,如下所示:

自定义绑定:

服务端点:

但它仍然出现异常,我认为我的配置出了点问题。

任何帮助将不胜感激。

提前致谢。

0 投票
1 回答
141 浏览

c# - 将 AttachTo 与包含的 EntitySet 一起使用

我有一些类定义如下:

我想使用 AttachTo 将对象添加到 DataServiceContext 而无需先查询它。我怎样才能做到这一点?

0 投票
1 回答
206 浏览

wcf - 从 IQueryable DB First Approach EF 获取自定义列

我正在使用实体框架中的数据库优先方法,我必须从实体中检索特定列。

这里的 return 语句抛出一个错误,它似乎与Employees(实体)列不匹配。你能帮我解决这个问题吗?提前致谢。