2

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

我试图追查问题,发现它可能是第 12635 行:

if (!inverseProperty) return;

如果没有反向属性,它不会将找到的相关实体推送到可观察数组中。这很奇怪,因为微风文档明确指出:

省略导航属性

有时您想省略关联一侧的导航属性。例如,您可能有 Person.Gender 但您不想要 Gender.Persons;没有充分的理由从“男性”性别实体导航到所有男性 Persons,也没有理由为该导航更新可观察数组的开销。幸运的是,您可以省略关联原则侧的导航属性。Gender 是本示例中的主体,因此您可以省略 Gender.Persons。

以下是定义:

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 样本与我所做的完全一样,不同之处在于它具有逆属性。

4

1 回答 1

2

从 v Breeze 1.3.5 开始编辑,现在可用(2013 年 6 月 4 日),此问题已得到修复。


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

我们还有一些其他的东西我们正试图首先解决(NHibernate 和 Mongo 的示例),但现在这是一个最优先的错误。

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

于 2013-05-28T17:10:25.573 回答