【发布时间】:2013-11-14 22:28:30
【问题描述】:
我们刚刚将 Breezejs 升级到最新版本 (1.4.5),以便我们可以在 EF 6 中使用它。我们还将项目更新为支持 OData 的 Web Api2。
在我们的代码中,我们通过对查询(来自我们的 datacontext.js)使用扩展来获取具有相关实体的实体:
BandContext.prototype.getBandWithDetails = function (bandId) {
var query = breeze.EntityQuery.from("Band").where(new breeze.Predicate("Id", "==", bandId)).expand("BandMembers.User.Image, BandImages.Image, Image, BandFollowers, ExternalLinks");
return this.executeQuery(query);
};
在breezecontroller.cs 中,我们的操作如下所示:
[HttpGet]
[Queryable(AllowedQueryOptions = AllowedQueryOptions.Supported | AllowedQueryOptions.Expand, MaxExpansionDepth = 4)]
public IQueryable<Band> Band()
{
return WebRepository.Bands;
}
这在很长一段时间内都很好用,但现在已经停止工作了。当我调用 WebApi 控制器并且实体和相关实体通过网络发送时,我仍然得到 200,但我收到以下错误消息:
relatedEntity.getProperty is not a function
我们完全不知道该怎么做,任何帮助将不胜感激:)
【问题讨论】:
-
通常当我收到此错误时,是因为我试图对一个属性执行某些操作,该属性要么没有返回,要么不是导航实体上的有效属性。您确定这些是乐队的有效属性吗? BandMembers.User.Image、BandImages.Image、Image、BandFollowers、ExternalLinks
-
当我尝试仅调用 expand('BandFollowers') 或 expand('Image') 时,我得到了同样的错误,我知道这些都是有效的。
标签: breeze