3

在服务器的 JSON 响应和 QuerySucceeded 回调之间,我的帐户实体中缺少实体属性“设备”

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

一些额外的信息:

  • 我在 EF Code First 中建立了多对多关系,方法是在我的帐户模型上创建一个设备集合并在我的设备模型上创建一个帐户集合。这些也被映射,等等
  • 我正在从帐户实体扩展设备
  • 即使我不进行“扩展”,对象上仍然没有“设备”属性。
  • Account 实体上还有另一个集合,称为 ReportConfigurations。该实体在响应罚款中显示为一个属性(这是一个 1 到多个)。
  • 这是我第一次使用 CodeFirst 修改数据库。我最初有一个数据库并使用电动工具将其转换为 Code First。正因为如此,我可能会遗漏一些导致它无法正确映射的东西,但没有什么能引起我的注意......

这是 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; }

最后是我的查询:

var query = entityQuery.from('Accounts')
                .where('id', 'eq', id)
                .expand('devices')
                .orderBy('givenName, familyName');

在此处输入图像描述

关于可能导致这种情况的任何想法?

4

1 回答 1

1

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

在这里找到答案: Breeze 中的多对多关系

这里还有一个持续的建议来支持 Breeze: https ://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/suggestions/3317477-many-many-relationship-for-ef

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

于 2013-09-26T05:18:13.280 回答