Asp.net web api 带有webapi的breezejs在使用expand时不返回子实体

Asp.net web api 带有webapi的breezejs在使用expand时不返回子实体,asp.net-web-api,breeze,Asp.net Web Api,Breeze,我在BreezeJs 1.3.5中使用WebAPI V4.0.30506.0(这应该是稳定的版本),由于某些原因,我在使用expand关键字时没有得到子实体。如何获取子实体 这是我的数据模型的简化版本 public class Policy { public int Id { get; set; } public string PolicyNumber { get; set; } public ICollection<Vehicle> Vehicles { g

我在BreezeJs 1.3.5中使用WebAPI V4.0.30506.0(这应该是稳定的版本),由于某些原因,我在使用expand关键字时没有得到子实体。如何获取子实体

这是我的数据模型的简化版本

public class Policy
{
    public int Id { get; set; }
    public string PolicyNumber { get; set; }
    public ICollection<Vehicle> Vehicles { get; set; }
}

public class Vehicle
{
    public int Id { get; set; }
    public string Manufacturer { get; set; }
    public string Model { get; set; }
    public int ModelYear { get; set; }
    public virtual Policy Policy { get; set; }
}
当我在Chrome中查看QuerySucceed中的data.results时,我看到了一系列策略,但没有子车辆。当我签入网络选项卡时,我看到它正在调用:

http://localhost/breeze/breeze/Policies?$expand=Vehicles
结果中有车辆

下面是我得到的一个片段:

[ { “$id”:“1”, “$type”:“Eclipse.Model.Policy,Eclipse.Model”, “Id”:1, “保单编号”:“PHHOAP00”, “车辆”:[ { “$id”:“2”, “$type”:“Eclipse.Model.Vehicle,Eclipse.Model”, “Id”:1, “制造商”:“ac,”, “模型”:“In”, “车型年”:2006年, “政策”:{ $ref:“1” }

编辑: 我不确定它是否相关,但当我在控制台中键入以下内容时,会得到空白数组

console.log(data.results[0].entityAspect._entityKey.entityType.navigationProperties)
console.log(data.results[0].entityAspect._entityKey.entityType.foreignKeyProperties)
马莱基,
您是否尝试将ForeignKey添加到车辆中的策略中?Breeze将需要FK来解决实体之间的导航问题,这很可能是导致问题的原因。

恢复到1.3.4版本的Breeze.debug.js修复了该问题


在我的例子中,在1.3.5 OData$expand中,似乎没有正确映射到data.results。

当您将结果存储在ObservalArray和console.log(ko.ObservalArray())中时,控制台中没有可以扩展的车辆导航属性?或者导航属性中没有实体?没有。我得到4个对象(预期。这是一个可观察的数组)当我深入到每个数据模型时,它们只有自己的属性,而没有车辆。你是正确的。Breeze现在要求显式定义外键。1.3.4不要求这样做。不幸的是,重构我的代码第一个数据模型需要几个小时(它会中断)。
console.log(data.results[0].entityAspect._entityKey.entityType.navigationProperties)
console.log(data.results[0].entityAspect._entityKey.entityType.foreignKeyProperties)