2

我使用 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';
    }
4

1 回答 1

1

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.
  }
}
于 2013-04-25T07:26:37.227 回答