我的数据结构具有单向1> n导航(没有n-> 1)但遗憾的是API不受我的控制。问题是,当我从服务中获取数据时,子项不会添加到父项中(虽然我确实从服务器接收了建筑物,但建筑物集合仍然是空的)。元数据是手动构建的。
我试图追查问题,我发现它可能是第12635行:
if (!inverseProperty) return;
如果没有反向属性,则不会将找到的相关实体推送到可观察数组中。这很奇怪,因为breeze文档明确指出:
省略导航属性
有时你想省略一个导航属性 协会。例如,您可能有Person.Gender,但您没有 想要Gender.Persons;没有充分的理由去导航 “男性”性别实体对所有男性人员都没有理由招致 更新该导航的可观察数组的开销。 幸运的是,您可以在原则上省略导航属性 协会的一面。性别是此示例中的主要内容 所以你可以省略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样本完全按照我的方式进行,不同之处在于它具有反向属性。
答案 0 :(得分:2)
编辑截至v Breeze 1.3.5,现已上市(2013年6月4日),此问题已修复。
这是已知的错误,我们会尽快修复它...
我们还有一些其他的东西要先出去(NHibernate和Mongo的样本),但现在这是一个最重要的错误。
注意,此错误仅发生在单向1 - >; ñ。 Breeze对单向n - >没有问题。 1(在大多数模型中更常见)。