Asp.net web api 带有webapi的breezejs在使用expand时不返回子实体
我在BreezeJs 1.3.5中使用WebAPI V4.0.30506.0(这应该是稳定的版本),由于某些原因,我在使用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
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)