Breeze问题与complexType更改跟踪

Breeze问题与complexType更改跟踪,breeze,Breeze,我在应用程序中使用Angular和Breeze,并使用“HasChangesAnged”事件处理EntityManager中存储的实体状态。当我有属性为complexType且isScalar=false的实体时,我遇到了一个问题。 当我发出两次请求(不更改任何实体)并获得相同的实体时,就会出现问题。在第二个请求中,“hasChangesChanged”事件被激发,hasChanges=true。 在触发此事件时,我的实体的状态为“已修改”,但在加载数据后,该状态更改为“未更改” 我写了一个(J

我在应用程序中使用Angular和Breeze,并使用“HasChangesAnged”事件处理EntityManager中存储的实体状态。当我有属性为complexType且isScalar=false的实体时,我遇到了一个问题。 当我发出两次请求(不更改任何实体)并获得相同的实体时,就会出现问题。在第二个请求中,“hasChangesChanged”事件被激发,hasChanges=true。 在触发此事件时,我的实体的状态为“已修改”,但在加载数据后,该状态更改为“未更改”

我写了一个(Jasmine)单元测试。注释中是断言抛出错误的信息

    var entity,
        hasChanges = false,
        listeners = {
            onChange: function (event) {
                console.log('change', event.hasChanges);
            }
        };
    spyOn(listeners, 'onChange');

    $httpBackend.expectGET('json/SampleEntity?').respond(200, [
        {
            id: 1,
            name: 'some name',
            data: {},
            $type: 'SampleEntity',
            elements: [
                {
                    etype: 'el1'
                }
            ]
        }
    ]);
    manager.hasChangesChanged.subscribe(function (event) {
        hasChanges = event.hasChanges;
    });

    var query = new breeze.EntityQuery('SampleEntity');
    manager.executeQuery(query).then(function (data) {
        entity = data.results[0];
    });


    $httpBackend.flush();

    expect(hasChanges).toBe(false); // OK
    expect(entity.entityAspect.entityState.isUnchanged()).toBe(true); // OK

    $httpBackend.expectGET('json/SampleEntity?').respond(200, [
        {
            id: 1,
            name: 'some name',
            data: {},
            $type: 'SampleEntity',
            elements: [
                {
                    etype: 'el1'
                }
            ]
        }
    ]);
    manager.executeQuery(query).then(function (data) {
        entity = data.results[0];
    });
    $httpBackend.flush();

    expect(hasChanges).toBe(false); // ERROR
    expect(entity.entityAspect.entityState.isUnchanged()).toBe(true); // OK

这是预期的行为吗?如果没有,我如何修复它?

已经通过DocCode测试确认了错误。报告称为D#2672。收到地址后我会通知你的