javascript - Breeze js : navigation property is created but not filled with data

标签 javascript breeze

我在导航属性方面遇到了另一个问题,但这次我的配置是 WCF 数据服务 + EF。

基本上元数据看起来不错,我有引用约束、关联等...我已经在模型中设置了 [ForeignKey] 属性。

导航属性是在客户端创建的,但是当检索数据时(使用 $expand),尽管服务器确实返回了数据,但集合并未填充:

enter image description here

此处的关联是 OpenPosition 上的授权 ID 和 Mandate 上的 id 之间的关联。

我注意到 OpenPositions 集合中的 Mandate 实体包含 __deferred 以及该实体的 uri。我没有在 WebApi 中看到过这种情况,所以也许这就是问题所在,或者这只是正常行为。

我有什么遗漏的吗?

编辑

客户端查询是:

  var query = breeze.EntityQuery.from("Mandates").inlineCount().expand("OpenPositions");
  return manager.executeQuery(query.using(service)).then(function (result) {
        logger.info(result);
    }).fail(function (error) {
        logger.error(error);
    });

编辑2

导航属性未填充的原因是,在 WCF Dataservice 的情况下,导航属性作为对象返回,其中包含一个名为 results 的数组属性。

而在 WebAPI 的情况下,导航属性以数组形式返回。

请注意,在这两种情况下,都使用了相同的数据模型(EF 上下文)。

查看屏幕截图:

WCF:

enter image description here

WebAPI:

enter image description here

但是 Breeze 需要一个数组,否则它只会忽略导航属性并返回 null:

   // needed if what is returned is not an array and we expect one - this happens with __deferred in OData.
        if (!Array.isArray(relatedRawEntities)) return null;

最佳答案

好吧,它终于可以工作了:)我现在正在使用 github 上最新提交的 Breezejs,这解决了我的问题。在我看来,通过 WCF 的 Breeze 直到现在才与 ODATA2 一起工作。 ODATA 规范明确说明了这一点:

  • ODATA V1:集合表示为数组
  • ODATA V2:集合表示为包含数组的对象。

在使用 github 版本的 Breezejs 之前,我可以让它工作的唯一方法是在 datajs 中将 MAX_DATA_SERVICE_VERSION 指定为 1.0。

无论如何,现在一切都很好。我已经等不及 Breeze 发布了 :) 顺便说一句,我很可能会放弃 OpenAccess 而转而使用 NHibernate。 NH WebAPI Controller 是否与 EF WebAPI Controller 一样完整?

关于javascript - Breeze js : navigation property is created but not filled with data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060244/

相关文章:

javascript - 如何获取数组中某个元素的索引

javascript - 为什么我的查询项的 entityAspect 为空?

Laravel Project Multi-Tenancy 、多库、一域

javascript - Breeze的executeQuery在IE11中比Chrome慢很多

angularjs - 如何将 SailsJS 连接到 BreezeJS

javascript - 如果不满足条件,我可以为Axios Get Method写一个if/else语句吗?

javascript - 组合框不显示所选值

javascript - for 循环无法正确执行 Javascript

javascript - 如何让第 3 个 <div> 直接放置在其他 2 个 div 中最高的 div 下而不嵌套前 2 个?

asp.net-mvc-4 - 如何在 ASP.NET MVC 4 上使用带有 SPA Hot Towel 模板的本地数据库