Breeze 1对多单向导航属性未填充

Breeze 1对多单向导航属性未填充,breeze,Breeze,微风版本:1.5.3 我在SO上遇到了一些与旧问题类似的问题,但似乎这个“错误”再次出现: 我有一个未填充的1对多单向导航属性。我已经检查了元数据和服务器的响应。我甚至在breeze中进行了调试,节点(或rawEntity)看起来非常完美 我试图找到它,并得出结论,它发生了,因为没有为我的导航属性找到“反向”-属性,并且mergeRelatedEntities函数在不更新目标实体的情况下返回: function mergeRelatedEntities(mc, navigationPropert

微风版本:1.5.3

我在SO上遇到了一些与旧问题类似的问题,但似乎这个“错误”再次出现:

我有一个未填充的1对多单向导航属性。我已经检查了元数据和服务器的响应。我甚至在breeze中进行了调试,节点(或rawEntity)看起来非常完美

我试图找到它,并得出结论,它发生了,因为没有为我的导航属性找到“反向”-属性,并且mergeRelatedEntities函数在不更新目标实体的情况下返回:

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);
        }
    });
}
旧帖:

编辑11。2015年5月 好吧,我开始理解Ward对于未映射属性的含义(通过发现两年前的类似问题:)

到目前为止,我所拥有的:

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);
这正是我想要的。有没有办法通过服务器的元模型实现这一点?因为我在服务器上定义了我的计算属性,并且元模型是由服务器交付的,所以如果我添加了新的导航属性,我不想更改客户端实现。所以我需要在元模型中有一个类似于旗帜的东西来告诉breeze,这个属性需要在没有外键的情况下通过导线时填充


换言之:我们正在服务器端对每个查询对象进行“子查询”(例如,查找有订单但只有特定日期的客户),并将其交付给breeze(在客户的real Orders属性之外的单独属性中)。我们的问题是:如何解包此子查询,因为元数据中没有直接连接,但我们需要逻辑连接。

请使用以下内容更新您的问题:

  • 如何获取/创建元数据

  • 两个端点的元数据(仅导航道具、pk道具和fk道具即可)

  • 精确查询表达式

当然,在普朗克重播是最受欢迎的

2015年5月7日更新 如果我正确理解了您的评论,那么所讨论的导航属性(属性)将由您(w/服务器提供的信息)维护,而不是由Breeze维护


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

多亏了你的评论,我再次仔细阅读了“手动元数据(深入)”。我缺少“invForeignKeyNames”(我自己创建元数据)。问题是:这是服务器计算出的关联,实体之间没有“真正”连接。它返回另一个名为“UserSettings”的导航属性中许多UserSettings中的一个UserSetting(当前的)。它由QueryHelper(PostExecuteQuery)填充。所以我的实体有两个导航。属性:“UserSettings”和“CurrentUserSettings”。这很有意义。该属性由服务器维护(我们称之为计算属性),并附加在PostExecuteQuery中。此外,此属性还包含可以合并到缓存管理器中并具有真实导航属性的真实实体。这就是为什么我希望breeze像对待其他实体一样对待它们。只有通过计算属性的连接是“特殊”的,并且仅由服务器在查询执行时进行。那么,如何将元模型中的导航属性标记为“未映射”?我以为这是一个客户端功能…我只是用新的见解编辑了我的问题。如果你能就此发表意见,那将很有帮助。谢谢