首先使用Breeze和Entity Framework代码将数据从调用返回给Web服务。
我的数据模型有几个层次。在这个例子中,我正在返回一个“schedule”对象,它有许多子“DefaultItems”,每个子对象都有一个成本和一个具有自己属性的“type”子对象。
如果您直接调用其中一个的Web服务,您会得到类似的内容,这是预期的:
{
$id:"1",
$type:"Schedule_06B188AC55B213FE4B13EA5B77D9C039007E80E9DB6F6841C055777A028C5F95, EntityFrameworkDynamicProxies-Core",
DefaultItems:[
{
$id:"2",
$type:"DefaultItem, Core",
RowId:"d422af5d-d6ca-46a3-a142-1feb93348e1d",
Cost:1,
Type:{
$id:"3",
$type:"Type, Core",
RowId:"38ed6d1b-d0b7-43cb-b958-2b2424b97759",
Type:"Type1"
},
Schedule:{
$ref:"1"
}
},
//more DefaultItem objects
{},
{}
],
RowId:"627eb2f2-ec74-4646-b3d1-d6423f84a2cd",
Start:"2010-01-18T00:00:00.000",
End:"2019-01-18T00:00:00.000"
}
然后归结为浏览器,其中使用knockout将其绑定到数据对象。麻烦的是,此时数据似乎只有一个层次。
所以我可以毫无问题地获得Schedule.Start和Schedule.End。我还可以遍历我的Schedule中的DefaultItem对象并获取其成本。但是DefaultItem中的Type对象并不存在。
这不是使用不正确的名称来绑定它们:如果你在浏览器调试器中暂停并深入查看浏览器所具有的JSON,那么根本就没有Type对象,甚至不应该是空对象。
他们怎么走出网络服务,但似乎不在Breeze传回浏览器的数据中?
答案 0 :(得分:0)
显然,在Breeze中,为了传播,必须以两种方式定义关系。所以我必须确保我的Type类中的主键被标记为DefaultItem类的外键。
我相信这是目前注册的错误。这肯定有点烦人。