Breeze 1-To-Many单向导航属性未填充

时间:2015-05-05 14:46:54

标签: breeze

Breeze版本:1.5.3

我正在经历类似于某些旧问题的问题,但似乎这个“错误”再次发生:

我有一个1-To-Many单向导航属性,但未填充。我检查了服务器的元数据和响应。我甚至调试了微风,节点(或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

已编辑11. 2015年5月

好的,我开始了解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等的情况下通过电线填充。

也许换句话说:我们正在服务器端进行“子查询”(例如,查找具有订单的客户,但只能查询特定日期),并将其交付给每个查询对象(在与客户的真实订单属性不同的属性中)。我们的问题是:我们如何解压缩这个子查询,因为元数据中没有直接连接,但我们需要连接逻辑。

1 个答案:

答案 0 :(得分:0)

请通过以下方式更新您的问题:

  • 您如何获取/创建元数据

  • 两个端点的元数据(只有nav props,pk prop和fk props会做)

  • 确切的查询表达式

当然,最受欢迎的是一名牧师。

2015年5月7日更新

如果我正确理解您的评论,您所使用的导航属性(属性)将由您(使用服务器提供的信息)维护,而不是由Breeze维护。

这促使我建议您将它们维护为 未映射的 属性,而不是映射的导航属性。这有意义吗?