breeze.js导航属性在导入时不可用于自定义初始值设定项

breeze.js导航属性在导入时不可用于自定义初始值设定项,breeze,Breeze,从服务器检索实体和元数据时,我的自定义初始值设定项函数能够按预期访问它们的导航属性。将元数据和实体导出到localstorage并重新导入时,导航属性不可用。我已经确保在调用方法时,在导入之前将ctor和初始值设定项注册到元数据存储中。我查看了breeze源代码,似乎在完全填充和附加项之前调用了初始化函数 targetEntity = entityType._createEntityCore(); updateTargetFromRaw(targetEntity, raw

从服务器检索实体和元数据时,我的自定义初始值设定项函数能够按预期访问它们的导航属性。将元数据和实体导出到localstorage并重新导入时,导航属性不可用。我已经确保在调用方法时,在导入之前将ctor和初始值设定项注册到元数据存储中。我查看了breeze源代码,似乎在完全填充和附加项之前调用了初始化函数

targetEntity = entityType._createEntityCore();
            updateTargetFromRaw(targetEntity, rawEntity, dataProps, true);
            if (newTempKeyValue !== undefined) {
                // fixup pk
                targetEntity.setProperty(entityType.keyProperties[0].name, newTempKeyValue);

                // fixup foreign keys
                if (newAspect.tempNavPropNames) {
                    newAspect.tempNavPropNames.forEach(function (npName) {
                        var np = entityType.getNavigationProperty(npName);
                        var fkPropName = np.relatedDataProperties[0].name;
                        var oldFkValue = targetEntity.getProperty(fkPropName);
                        var fk = new EntityKey(np.entityType, [oldFkValue]);
                        var newFkValue = tempKeyMap[fk.toString()];
                        targetEntity.setProperty(fkPropName, newFkValue);
                    });
                }
            }
            *targetEntity.entityAspect._postInitialize();*
            targetEntity = entityGroup.attachEntity(targetEntity, entityState);
            if (entityChanged) {
                entityChanged.publish({ entityAction: EntityAction.AttachOnImport, entity: targetEntity });
                if (!entityState.isUnchanged()) {
                    entityGroup.entityManager._notifyStateChange(targetEntity, true);
                }
            }
        }

        if (targetEntity) {
            targetEntity.entityAspect.entityState = entityState;
            if (entityState.isModified()) {
                targetEntity.entityAspect.originalValuesMap = newAspect.originalValues;
            }
            entityGroup.entityManager._linkRelatedEntities( targetEntity);
        }
如果我将post initialize调用移到._linkRelatedEntities调用下面,它的工作方式似乎与查询具体化完全相同

if (targetEntity) {
            targetEntity.entityAspect.entityState = entityState;
            if (entityState.isModified()) {
                targetEntity.entityAspect.originalValuesMap = newAspect.originalValues;
            }
            entityGroup.entityManager._linkRelatedEntities( targetEntity);
            *targetEntity.entityAspect._postInitialize();*
        }
我是不是遗漏了什么?这是设计的功能吗?通过传入EntityManager,设置entityAspect管理器并调用loadNavigationProperties,我找到了一个解决方法,不过这似乎是多余的。微风人的任何见解都将不胜感激

谢谢,
Brad

不确定,但此问题可能与我们刚刚在现在可用的Breeze 1.4.1中修复的错误有关

在Breeze 1.4.1中是否为您解决了此问题?我在Breeze 1.5.4中遇到类似问题。。。