docs: def merge(self, storagemodel) -> StorageTableModel:
          """ try to merge entry """
          modeldefinition = self.getmodeldefinition(storagemodel, True)
         
          try:
              pk = storagemodel.getPartitionKey()
              rk = storagemodel.getRowKey()
              entity = modeldefinition['tableservice'].get_entity(modeldefinition['tablename'], pk, rk)
          
              """ merge with entity values """
              for key, default in vars(storagemodel.__class__).items():
                  if not key.startswith('_') and key not in ['']:
  
                      if isinstance(default, PartitionKey) or isinstance(default, RowKey) or  isinstance(default, EncryptKey):
                          default = default._default
  
                      newvalue = getattr(storagemodel, key, None)
                      if (newvalue is None) or (newvalue == default):
                          oldvalue = getattr(entity, key, default)
                          setattr(storagemodel, key, oldvalue)
              
              modeldefinition['tableservice'].insert_or_replace_entity(modeldefinition['tablename'], storagemodel.entity())
              storagemodel._exists = True
  
          except AzureMissingResourceHttpError as e:
              log.debug('can not merge table entity:  Table {}, PartitionKey {}, RowKey {} because {!s}'.format(modeldefinition['tablename'], pk, rk, e))
  
          except Exception as e:
              log.debug('can not merge table entity:  Table {}, PartitionKey {}, RowKey {} because {!s}'.format(modeldefinition['tablename'], pk, rk, e))
  
          finally:
              return storagemodel