问题标签 [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 投票
0 回答
1158 浏览

wcf-data-services - 提高 WCF 数据服务中 .NET 客户端数据上下文性能的提示?

我们一直在使用以下堆栈开发一个新应用程序:

SQL Server 2008 R2 -> 实体框架 4.2 -> WCF 数据服务 -> WCF 数据服务客户端库

这都是 .NET 4.0

现在,WCF 数据服务客户端库对于少量数据和简单的模式/对象图非常方便,但对于更复杂的模型来说它是一条真正的狗。特别是,我们发现 DataServiceContext.Links 集合的规模类似于 O(n^2):加载的相关对象越多,图的嵌套越多,它变得越慢,直到加载数据需要更长的时间进入上下文而不是从电线上读取它。

例如,我们有一个包含 2000 个成员的集合,每个成员都有 4 个导航属性。在不扩展任何导航属性的情况下拉出整个集合大约需要 1 秒。展开所有 4 个导航属性需要 5 秒。我们已经测量了堆栈中各个点的性能,大部分额外时间都花在了客户端上,用于整理数据。

对于大型数据集,我们采用了各种技术来解决这个问题:

  1. 非规范化。这对于我们总是展开的那些图很有效。如果我们想延迟加载图表的一部分,效果就不太好了。
  2. 分别加载相关对象,并在数据上下文之外将它们拼接在一起。这很烦人,但它确实克服了 context.Links 问题。
  3. 使用多个数据上下文将 Links 集合的压力降至最低。
  4. 使用 MergeOption.NoTracking 连接 w/ (1) & (2)

有人知道其他技术吗?加载相关对象时是否存在可能导致不必要开销的设置?

有时,我们似乎已经完成了编写自己的自定义上下文的一半,我想要在它变得更详细之前进行一次完整性检查。

[是的,我意识到 WCF 数据服务可能不适合这项工作。唉,我们已经走上了这条路]

0 投票
1 回答
253 浏览

c# - WCF 数据服务不支持很多东西

我正在使用 WCF 数据服务和实体框架 4 Code First 的 2011 年 3 月 CTP2,并且遇到了很多问题。我遇到的问题与不受支持的“内部查询”有关。

例如,在我的服务端,我有一个 Auction 对象,一个 Auction 对象可以附加 0 个或多个出价。现在,在我的客户端,我想执行这个查询来找到当前的最高出价(a是一个拍卖对象)。

忽略如果没有投标,这将失败的事实。运行此查询时出现此错误

所以我想我会把这个逻辑放在服务端。因此,我从客户端调用此方法(再次拍卖)

我再次收到错误

我的问题是,为什么会这样?是因为我使用的 WCF 数据服务版本吗?这些问题在最新版本中得到解决了吗?

谢谢

萨钦

编辑

0 投票
1 回答
639 浏览

wcf-data-services - 如何从 WCF 数据服务响应中提取 ETAG?

很长一段时间以来,我一直在努力寻找这个问题的答案。由于 WCF 数据服务不是线程安全的,并且通常需要重新创建,一旦我查询我的数据存储以获取记录,如何从该响应中提取 ETAG,以便在我重建数据上下文时使用它?

0 投票
1 回答
643 浏览

wcf - WCF 发现和数据服务 V3

我想为我的 Data Services v3 公开发现端点(TCP 和 UDP),并使服务可以从客户端发现并在另一个应用程序中发现它们。发现的要点是在客户端获取服务端点地址。

我试图调整 Microsoft 为WCF Discovery提供的示例,但到目前为止我未能实现我的目标。我在服务器端创建了一个自定义数据服务主机工厂

客户端,我尝试了以下代码:

不幸的是,这不起作用。我得到InvalidOperationException

尝试获取 DataModel 的合同类型,但该类型不是 ServiceContract,也不继承 ServiceContract。

如果我朝着正确的方向前进,我需要一种方法来表达发现的服务合同的类型。太糟糕了,我不确定它是否会像正常的 WCF 发现一样工作......

请分享您的想法甚至更好的工作解决方案。

0 投票
2 回答
843 浏览

entity-framework - 是否有等效于 DbContext.Set(type) 的 DataServiceContext.Set(type)

我最近创建了一个围绕 Entity Framework 的 DbContext 构建的非常强大的 API。我正在使用大量元数据编程并利用这样一个事实,即我可以通过像 DbContext.Set(typeof(Customer)) 这样的调用来获取我的数据。只是,在我的 API 中,我在编译时不知道我将传递给 Set 方法的类型。这与 EntityFramework 一起工作得很好,我想添加另一个层抽象并让它与 EntityFramework 或 DataServiceContext 一起工作。所以,我真的有两个问题。

首先,更具体地说,是否存在等效于 DbContext.Set(type) 方法的 DataServiceContext(即 odata/wcf)?

其次,更一般地说,是否有一个很好的资源可以将 DbContext 提供的 API 与 DataServiceContext 进行比较?

0 投票
0 回答
156 浏览

wcf - Mono for Android 中的 OData 质量

我正在寻找创建一些跨平台库。对于我的移动平台,对我来说最重要的事情之一就是访问 Web 服务。在做了相当多的阅读之后,似乎最好的解决方案是针对 DataServiceContext (wcf-data-services-client) 进行编写。

在我编写我的跨平台库并开始我的单声道 android 试用版之前,我想知道是否有人对 Android 上的这个库有任何经验?有没有人有在 Mono for Android 上使用任何 WCF 客户端库的经验?有关该主题的任何信息或个人经验都会有所帮助。

谢谢你。

0 投票
0 回答
788 浏览

delphi - Delphi XE3 可以像 Soap 一样访问 WCF 数据服务吗?(无需手动解析 XML)

我们即将购买Delphi XE3,但是自从安装了demo之后,我注意到我无法将服务引用添加到WCF 数据服务中。我尝试使用服务的元数据 URL 和服务的基本 URL,但没有成功。

我们希望本机支持此功能,以处理从 Atom 提要到客户端对象的序列化/反序列化。

Delphi 的营销材料建议原生支持 WCF 数据服务,如果我们必须构建 http 请求,然后手动解析返回的 XML,那么我们还不如从 Delphi 2010 升级。

有人对这个有经验么?我只需要输出json吗?我需要使用一个特定的组件来处理这个而不是 Delphi 中的 WSDL 导入吗?

谢谢

0 投票
1 回答
693 浏览

asp.net-web-api - WebApi Odata Windows Store App EndSaveChanges 异常

我正在尝试使用 WebApi Odata 控制器创建 Windows 应用商店应用程序。经过一番努力,我的所有 Get 请求都正常工作,现在我转向 CRUD 方法,并在数据服务上下文的 EndSaveChanges 上收到以下异常。

现在我认为这是来自http://aspnetwebstack.codeplex.com/workitem/822的 WebApi 中的一个错误,它隐藏了实际错误。为了确保它不是我的 Odata 端点,我创建了一个快速控制台应用程序来获取条目、更新它并修补它,一切正常。我的 WebApi Odata Controller 使用
public HttpResponseMessage Patch([FromODataUri] Guid key, Delta<ESFClient> patch) As 方法从 ODataController 派生。在我的 Windows 应用程序中,我在 DataServiceContext 上有一个用于保存更改的扩展方法。

并从空白的 Windows Store XAML 页面调用更新。

有没有人遇到过同样的问题,或者知道如何找出实际错误。一个有趣的点是,如果我在运行 Windows 应用程序时调试控制器,补丁方法不会被调用。

0 投票
1 回答
1453 浏览

c# - 从 WCF 数据服务客户端获取单个记录的最佳实践

我有 DataService 其中 T 是一个 EntityFramework DbContext 类

我的客户端应用程序是带有服务参考的 Windows 窗体应用程序。

从服务中获取单个实体的最佳方法是什么?

此代码有效:

但是,它之所以有效,是因为该产品存在。那是因为我可以通过执行看到结果

在浏览器中。如果我想查询数据库中不存在的产品 123456

我看到一个错误文本“未找到“产品”部分的资源

问题是,在客户端我得到一个异常,但我希望FirstOrDefault()它是空的。当然我可以使用一些异常处理,但我想知道我的方法是否正确,或者是否有更好的方法来获取单个对象。

0 投票
1 回答
1376 浏览

visual-studio-2012 - Visual Studio Express 2012 for Web:创建对 WCF 数据服务 5.0.0.0 的服务引用导致自定义工具错误

至少在 Visual Studio Express 2012 for Web 中,当使用真正的 RESTful URL(在没有 .svc URI 或文件的情况下正确路由)创建对 WCF 数据服务 5.0.0.0 服务的服务引用时:

  1. 您需要将 /$metadata 添加到服务 URL 以获取元数据

  2. 下载/创建 .edmx 和 .datasvcmap 后出现“无法在此系统上找到自定义工具 'DataServicesCoreClientGenerator'”的错误。

  3. 尝试删除不完整的服务引用时,出现错误:“找不到 .svcmap 文件。它可能已被移动或删除。要生成新的 .svcmap 文件,请删除服务引用并重新添加。”。首先,我只是尝试删除它,B,看起来那里有一个 .datasvcmap 文件,而不是 .svcmap。

我是否缺少某些工具或 VS 2012 Express 中 datasvcutil.exe 的链接?