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