|
Software Development Kit to the Delphi-Win32 and Free Pascal compilers |
| Home > Wiki > br/Id generation |
br/Id generationenglish (en) | português (br) O metadata do PressObjects possui suporte para geração de Id através do banco de dados. Para tanto, basta indicar o nome do generator no metadata da classe:
class function TProduto.InternalMetadataStr: string;
begin
Result := 'TProduto IsPersistent GeneratorName="gen_idproduto" (' +
'Codigo: Integer GeneratorName="gen_codproduto";' +
'Nome: String(80);' +
')';
end;
O Id será gerado apenas no momento de gravar o objeto no banco, caso o campo tenha conteúdo nulo (IsNull = True). Portanto, criar objetos sem gravá-los na base não irá alterar o conteúdo de seus respectivos generators. O método PressOPFService.CreateDatabaseStatement (unit PressOPF) irá incluir cada generator diferente no metadata do banco de dados. Para associar um único generator para todos os OIDs: initialization PressModel.DefaultGeneratorName := 'gen_app'; Desta forma, todo OID que não possuir um generator declarado explicitamente, utilizará 'gen_app'. Uma vez que o generator retorna um conteúdo numérico, é possível alterar todos os OIDs para um tipo inteiro (o padrão é String(32)). Então a declaração do generator pode ser alterada para: initialization PressModel.DefaultGeneratorName := 'gen_app'; PressModel.DefaultKeyType := TPressInteger; O objeto PressModel encontra-se na unit PressSubject e a classe TPressInteger encontra-se na unit PressAttributes. |
Personal tools |