【发布时间】:2015-05-05 14:46:54
【问题描述】:
微风版本:1.5.3
我在 SO 上遇到了一些与旧问题类似的问题,但似乎这个“错误”正在再次发生:
我有一个未填充的一对多单向导航属性。我已经检查了元数据和服务器的响应。我什至调试到微风中,节点(或 rawEntity)似乎很完美。
我试图追踪它并得出结论,它发生了,因为没有为我的导航属性找到“反向”属性,并且在没有更新目标实体的情况下返回了 mergeRelatedEntities-Function:
function mergeRelatedEntities(mc, navigationProperty, targetEntity, rawEntity) {
var relatedEntities = mergeRelatedEntitiesCore(mc, rawEntity, navigationProperty);
if (relatedEntities == null) return;
var inverseProperty = navigationProperty.inverse;
if (!inverseProperty) return;
var originalRelatedEntities = targetEntity.getProperty(navigationProperty.name);
originalRelatedEntities.wasLoaded = true;
relatedEntities.forEach(function (relatedEntity) {
if (typeof relatedEntity === 'function') {
mc.deferredFns.push(function () {
relatedEntity = relatedEntity();
updateRelatedEntityInCollection(relatedEntity, originalRelatedEntities, targetEntity, inverseProperty);
});
} else {
updateRelatedEntityInCollection(relatedEntity, originalRelatedEntities, targetEntity, inverseProperty);
}
});
}
旧帖:
Non scalar navigation properties are not populating with "nodb" conception
和
Breeze (1.4.5) unidirectional one-to-many: navigation collection not populated
2015 年 5 月 11 日编辑
好的,我开始理解 Ward 对未映射属性的含义(通过查找 2 年前的类似问题:Handling calculated properties with breezejs and web api)
到目前为止我所拥有的:
function iUIConfigConstructorTool() {
this.ConfigToCurrentUSetting = null;
};
function iUIConfigConstructorAppl() {
this.ConfigToCurrentUSetting = null;
};
function iUIConfigConstructorWidget() {
this.ConfigToCurrentUSetting = null;
};
function iUIConfigInitializer(uiConfigObject) {
// initializing other properties
};
this.manager.metadataStore.registerEntityTypeCtor("Tool", iUIConfigConstructorTool, iUIConfigInitializer);
this.manager.metadataStore.registerEntityTypeCtor("Appl", iUIConfigConstructorAppl, iUIConfigInitializer);
this.manager.metadataStore.registerEntityTypeCtor("Widget", iUIConfigConstructorWidget, iUIConfigInitializer);
这就是我想要的。有没有办法通过服务器的元模型做到这一点?因为我在服务器上定义了我的计算属性并且元模型是由服务器提供的,所以如果我添加一个新的 Navigation-Property,我不想更改客户端实现。所以我需要元模型中的标志之类的东西来告诉微风,这个属性需要被填充,因为它在没有 ForeignKeys 等的情况下通过电线。
也许换句话说:我们在服务器端对每个查询的对象进行“子查询”(例如,查找带有订单的客户,但仅限于特定日期)并将其交付给轻而易举(在与客户的实际订单属性不同的属性中)。我们的问题是:我们如何解包这个子查询,因为元数据中没有直接连接,但我们需要逻辑连接。
【问题讨论】:
标签: breeze