1

我们正在尝试为 ASP.NET + Silverlight 5 设置 Web API 2.2 和 OData v4。

Initiall POC 有一个使用 Simple.OData 连接的单元测试项目。这很好用。但我们无法在 Silverlight 5 上设置 OData 客户端。

使用客户端代码生成器 v4 并不断出错

命名空间“Microsoft.OData”中不存在类型或命名空间名称“Client”(您是否缺少程序集引用?) C:\Workspaces\GKS\Main\Source\Simutek.Gks\Source\Simutek.Gks.UI .SL.Common\GksODataClient.cs Simutek.Gks.UI.SL.Common

套餐:

  <package id="Microsoft.OData.Client" version="6.12.0" targetFramework="sl50" />
  <package id="Microsoft.OData.Core" version="6.12.0" targetFramework="sl50" />
  <package id="Microsoft.OData.Edm" version="6.12.0" targetFramework="sl50" />
  <package id="Microsoft.Spatial" version="6.12.0" targetFramework="sl50" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="sl50" />

引用看起来不错,我们还在 app.config 中尝试了 AssemblyBinding:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.OData.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.OData.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>

更新:确实,虽然Microsoft.OData.Client NuGet 包安装在 Silverlight 上,但实际上并未在其目标中指定 SL5。我现在看到这个包只针对

便携-net45+wp8+win8+wpa

因此,虽然我可以在 PCL 项目中进行,但我不能在针对 Silverlight 5 的项目中这样做。

有解决办法吗,有谁做到了?

4

2 回答 2

0

您应该使用支持 Silverlight 的 PCL 之一,两个候选者是 ODataLib (Microsoft.OData.Core) 和 Simple.OData.Client,后者构建在 ODataLib 之上。它们都不支持类生成,但自己滚动应该没什么大不了的。

于 2015-05-25T19:34:44.277 回答
0

Silverlight 不支持 Microsoft 的 OData v4 Client Code Generator visx (OData Client T4) 生成的代码,但没有人强迫您使用生成的代码。

只需使用您选择的库来创建到 OData 服务的连接并重用您自己的类型(业务对象)。

于 2015-05-28T09:29:02.160 回答