0

首先将 Breeze 与 Entity Framework 代码一起使用以从对 Web 服务的调用中返回数据。

我有一个有几个层次的数据模型。在这种情况下,我返回一个“schedule”对象,它有许多子“DefaultItem”,每个子都有一个成本和一个具有自己属性的“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"
}

然后这归结为浏览器,其中敲除用于将其绑定到数据对象。麻烦的是,在这一点上,数据似乎只有一个层次。

所以我可以毫无问题地进入 Schedule.Start 和 Schedule.End。我还可以遍历 Schedule 中的 DefaultItem 对象并取出它们的 Costs。但是 DefaultItem 中的 Type 对象不存在。

这与使用不正确的名称绑定它们无关:如果您在浏览器调试器中暂停并深入了解浏览器拥有的 JSON,则根本没有 Type 对象,甚至没有它们应该在的空对象。

为什么它们来自 Web 服务,但似乎不在 Breeze 传回浏览器的数据中?

4

1 回答 1

0

显然,在 Breeze 中,必须以两种方式定义关系才能传播。所以我必须确保我的 Type 类中的主键被标记为 DefaultItem 类的外键。

我相信这目前已注册为错误。这当然有点烦人。

于 2013-07-19T12:07:01.047 回答