Breeze 1-To-Many Unidirectional Navigation Property not Populated

血红的双手。 提交于 2020-01-06 13:04:31

问题


Breeze Version: 1.5.3

I'm experiencing something similiar to some older questions on SO but it seems like this "bug" is reoccurring:

I have a 1-To-Many unidirectional navigation property which is not populated. I have checked the metadata and the response from the server. I've even debugged into breeze and the node (or rawEntity) seems to be perfect.

I've tried to track it down and came to the conclusion, that it happens, because no "inverse"-Property is found for my Navigation Property and the mergeRelatedEntities-Function returning without updating the target Entity:

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);
        }
    });
}

Older Posts:

Non scalar navigation properties are not populating with "nodb" conception

and

Breeze (1.4.5) unidirectional one-to-many: navigation collection not populated

Edited 11. May 2015

Okay I start to understand what Ward meant with the unmapped properties (by finding a similar question from 2 years ago: Handling calculated properties with breezejs and web api)

What I have so far:

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);

This does what I want. Is there a way, to do this over the metamodel from the server? Because I define my calculated properties on the server and the metamodel is delivered by the server, I don't want to change the client-side implementation if I add a new Navigation-Property. So I'd need something like a flag in the metamodel to tell breeze, that this property needs to be filled as it comes over the wire without ForeignKeys etc.

Maybe in other words: We are doing "sub queries" on the server side (e.g. find Customers with it's Orders but only up to a certain Date) for each queried object and deliver this to breeze (in a separate property than the real orders-property of the Customer). Our problem is: How do we unpack this sub-query because there is no direct connection in metadata but we need the connection for the logic.


回答1:


Please update your question with:

  • how you obtained/created metadata

  • metadata for the two endpoints (just the nav props, pk prop, and fk props will do)

  • the exact query expression

Of course a repro in plunker would be most welcome.

update 7 May 2015

If I understand your comment correctly, the navigation property (properties) in question are to be maintained by you (w/ server-supplied info), not by Breeze.

That leads me to suggest that you maintain them as unmapped properties rather than mapped, navigation properties. Does that make sense?



来源:https://stackoverflow.com/questions/30056231/breeze-1-to-many-unidirectional-navigation-property-not-populated

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!