Breeze 未填充没有反向属性的子实体

Breeze 未填充没有反向属性的子实体,breeze,Breeze,我有一个带有单向1->n导航(no n->1)的数据结构,但不幸的是API不在我的控制之下。问题是,当我从服务中获取数据时,子对象并没有添加到父对象中(尽管我确实从服务器接收到建筑物,但建筑物集合仍然为空)。元数据是手动构造的 我试图找出问题所在,发现可能是第12635行: if (!inverseProperty) return; 如果没有反向属性,则不会将找到的相关实体推送到可观察数组中。这很奇怪,因为breeze文档明确指出: 忽略导航属性 有时,您希望在导航的一侧忽略导航属性 协会。例

我有一个带有单向1->n导航(no n->1)的数据结构,但不幸的是API不在我的控制之下。问题是,当我从服务中获取数据时,子对象并没有添加到父对象中(尽管我确实从服务器接收到建筑物,但建筑物集合仍然为空)。元数据是手动构造的

我试图找出问题所在,发现可能是第12635行:

if (!inverseProperty) return;
如果没有反向属性,则不会将找到的相关实体推送到可观察数组中。这很奇怪,因为breeze文档明确指出:

忽略导航属性

有时,您希望在导航的一侧忽略导航属性 协会。例如,你可能有Person.Gender,但你没有 想要性别;没有很好的理由从 “男性”性别实体适用于所有男性,无需承担 为该导航更新可观测阵列的开销。 幸运的是,您可以省略原则上的导航属性 协会的一方。在这个例子中,性别是主要因素 所以你可以省略性别

以下是定义:

function addBuildingType(store) {
        store.addEntityType({
            shortName: 'Building',
            namespace: 'Helios',
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                id: { dataType: DataType.Int32, isNullable: false, isPartOfKey: true },
                address: { dataType: DataType.String },
                city: { dataType: DataType.String },
                client: { dataType: DataType.String },
                contractNo: { dataType: DataType.Int32 },
                includedDevices: { dataType: DataType.Int32 },
                phoneNo: { dataType: DataType.String },
                totalDevices: { dataType: DataType.Int32 },
                zipCode: { dataType: DataType.String }
            }
        });
    } 

    function addScheduledEventType(store) {
        store.addEntityType({
            shortName: 'ScheduledEvent',
            namespace: 'Helios',
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                id: { dataType: DataType.Int32, isNullable: false, isPartOfKey: true },
                startTime: { dataType: DataType.DateTime, isNullable: false },
                duration: { dataType: DataType.DateTimeOffset, isNullable: false }
            },
            navigationProperties: {
                buildings: { entityTypeName: "Building:#Helios", isScalar: false, associationName: "ScheduledEvent_Buildings" }
            }
        });

        store.registerEntityTypeCtor(
            'ScheduledEvent', null, scheduledEventInitializer);
    }

关于如何在不添加逆属性的情况下解决这个问题,有什么想法吗?否则一切都会正常工作,因为Edmunds示例与我所做的完全相同,不同之处在于它具有反向属性。

编辑自v Breeze 1.3.5版(2013年6月4日)起,此问题已得到修复


这是已知的错误,我们将尝试尽快修复它

我们有一些其他的东西,我们正试图首先推出(NHibernate和Mongo的样本),但这现在是一个最重要的bug


注意,此错误仅在单向1->n时出现。Breeze对单向n->1(大多数型号中更常见)没有问题。

如果更新到最新的Breeze解决了您的问题,我想知道您是否必须更改实体定义中的任何内容。。。具体来说,Breeze是如何知道哪一组建筑实体与特定ScheduleEvent实体相关的。我使用的是1.4.8 Breeze版本的“nodb”概念。我正在尝试将模型配置为具有键/值对列表。我看到传输了正确的数据,但Breeze没有填充该数组。该类型的非标量变量工作正常,但不是数组。您能否将此问题作为单独的问题与使用非标量属性定义描述该类型的元数据一起发布?感谢您的快速反应!我刚刚就我的案例提出了一个单独的问题: