Breeze 服务器响应和QuerySucceedD之间缺少实体属性

Breeze 服务器响应和QuerySucceedD之间缺少实体属性,breeze,Breeze,在服务器的JSON响应和QuerySucceeded回调之间,my account实体中缺少实体属性“Devices” 当我检查JSON时,我可以看到返回的account对象上的设备数组。当我在QuerySucceeded方法中放置断点时,data.response帐户对象没有“Devices”属性 一些额外信息: 我在EF代码中首先通过创建一个 我的帐户模型上的设备集合和 我的设备型号上的帐户。这些也被映射,等等 我正在从帐户实体扩展设备 即使我不进行“扩展”,也没有“设备”属性 物体 帐户

在服务器的JSON响应和QuerySucceeded回调之间,my account实体中缺少实体属性“Devices”

当我检查JSON时,我可以看到返回的account对象上的设备数组。当我在QuerySucceeded方法中放置断点时,data.response帐户对象没有“Devices”属性

一些额外信息:

  • 我在EF代码中首先通过创建一个 我的帐户模型上的设备集合和 我的设备型号上的帐户。这些也被映射,等等
  • 我正在从帐户实体扩展设备
  • 即使我不进行“扩展”,也没有“设备”属性 物体
  • 帐户实体上还有另一个名为 报告配置。此实体在中显示为属性 响应良好(这是1对多)
  • 这是我第一次用CodeFirst修改数据库。我最初有一个数据库,并使用一个强大的工具将其转换为代码。正因为如此,我可能会错过一些东西,导致它无法正确映射,但没有任何东西突出到我身上
以下是AccountMap.cs中的相关部分:

this.HasMany(t => t.Devices)
                .WithMany(t => t.Accounts)
                .Map(m =>
                    {
                        m.ToTable("DeviceAccounts");
                        m.MapLeftKey("Account_Id");
                        m.MapRightKey("Device_Id");
                    });
Account.cs中的相关部分:

public Account()
        {
            this.Devices = new List<Device>();
        }
public virtual ICollection<Device> Devices { get; set; }


有没有关于是什么导致这种情况的想法?

Breeze不支持多对多关系,除非您公开联接表

在这里找到了答案:

这里还有一个支持这一点的持续建议:


要从帐户中获取设备的observableArray,我必须创建一个for循环来遍历Account.DeviceAccounts中的每个项目,并将内部设备推送到observableArray。

我也遇到了同样的问题。我加载了breeze.debug.js版本1.4.1,以便查看丢失数据的位置。在返回的函数executeQueryCore中,有一个executeQuery函数正在被调用。在调试文件的第13226行,nodes变量列出了导航属性及其值。调用nodes.map后,results变量根本没有导航属性。关于我的问题还有一个注意事项:我有两个导航属性,一个正常工作,另一个不正常。两者的定义都是相同的,我只是通过相同的代码优先过程向帐户模型中添加了一个基本的字符串属性,结果成功了。这让我觉得这一定与我创建设备集合的方式有关。
var query = entityQuery.from('Accounts')
                .where('id', 'eq', id)
                .expand('devices')
                .orderBy('givenName, familyName');