与自我引用微风实体的关系不一致

时间:2013-11-26 14:52:40

标签: javascript breeze single-page-application

我正在使用breeze(版本:“1.4.2”,metadataVersion:“1.0.5”)并定义了一个名为 Role 的自引用实体类型。应用程序在Web服务中查询角色列表,这些角色返回平面结构中的项目数组。然后使用这些项来创建角色实体。我已经定义了两个导航属性 Parent Child ,用于从这些元素构建树结构。

Breeze能够解析这些项​​目并设置关系。但是,有些情况下,如果父元素尚未在子元素之前定义,则不会创建关系。如果我查看已创建的实体,那么所有实体都在那里,并且它们具有所有正确的属性,并且已经设置了值。

注意:如果我订购商品以便始终首先创建父商品,那么一切正常。但是我不相信我需要这样做。

是否有一些我遗漏的东西导致每次使用随机列表排序都无法正确建立关系?

Breeze Config

var dataService = new breeze.DataService(
  { 
     serviceName: ... + '/breeze',
     hasServerMetadata: false
  });

var manager = new breeze.EntityManager({ 
    dataService: dataService
});

var metadataStore = manager.metadataStore;
manager.enableSaveQueuing(true);

我的角色定义:

store.addEntityType({
    shortName: 'Role',
    namespace: '68e46ee6-e08c-4877-a1fc-62458244834d',
    autoGeneratedKeyType: AutoGeneratedKeyType.KeyGenerator,
    dataProperties: {
        'ID': { dataType: breeze.DataType.Guid, isNullable: false, isPartOfKey: true },
        'Name': { dataType: breeze.DataType.String, isNullable: false, isPartOfKey: false },
        'ParentRoleID': { dataType: breeze.DataType.String, isNullable: false, isPartOfKey: false },
    },
    navigationProperties: {
        'Parent': {
            entityTypeName: 'Role:#68e46ee6-e08c-4877-a1fc-62458244834d',
            foreignKeyNames: ['ParentRoleID'],
            isScalar:  true                 
        },  
        'Children': {
            entityTypeName: 'Role:#68e46ee6-e08c-4877-a1fc-62458244834d',
            isScalar:  false                
        },  
    }
});

如果我需要提供任何进一步的信息,请告诉我。

0 个答案:

没有答案