breezejs:仅用于添加实体的registerEntityTypeCtor?

breezejs:仅用于添加实体的registerEntityTypeCtor?,breeze,Breeze,我已经使用registerEntityTypeCtor函数在创建实体时添加了一些初始化代码。但是,无论实体的状态如何(添加、更改、分离等),都会触发此代码 我希望registerEntityTypeCtor中的初始化代码只应用于添加了状态的实体。问题是,实体的状态仅在调用定制构造函数之后设置。我能做些什么来解决这个问题 function configureMetadataStore(metadataStore) { metadataStore.registerEntityTyp

我已经使用registerEntityTypeCtor函数在创建实体时添加了一些初始化代码。但是,无论实体的状态如何(添加、更改、分离等),都会触发此代码

我希望registerEntityTypeCtor中的初始化代码只应用于添加了状态的实体。问题是,实体的状态仅在调用定制构造函数之后设置。我能做些什么来解决这个问题

 function configureMetadataStore(metadataStore) {
        metadataStore.registerEntityTypeCtor('Mandate', function () {
            this.blah = 'test';
        }, mandatInitializer);

        //Validator.register(someValidator);
        logger.info('Validators applied');
    }

    function mandatInitializer(mandat) {     
        mandat.TransactionType = '0';
        mandat.Status = '0';
        mandat.NextSequenceType = '0';
        mandat.MandateType = '0';
    }

方法registerEntityTypeCtor有三个输入参数:实体名称、构造函数和初始值设定项方法。我认为您可以使用第三个参数仅在添加的实体中进行日化

dtContext.metadataStore.registerEntityTypeCtor(entityName, constructor, initializerMethod);
---编辑---

您可以在initializerMethod中检查id是否未定义:

function initializerMethod(entity){
  if(entity.id()===unefined || entity.id()=== null){
    //Do things that you want with the new entity
    //...
    //Initilize the id with a temporal value that would be override in the server side.
  }
}

这是我已经做过的。但在那个阶段,实体国家尚未确定。请参阅上面的我的代码。您可以在initializer方法中对实体中的id进行初始化。这样,如果id未定义,您可以检入这个方法,并且您可以知道它是否是一个新实体。不过,我更愿意检查实体状态。更整洁。我想是的,但我不知道如何在构造函数或初始值设定方法中进行此检查。我使用id检查结束您,因为我没有找到更好的方法。我会把你的帖子标记为答案。