Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Como definir a propriedade do tipo enum (Enumeration) no ORMBr?
#1
Eu setei uma propriedade de uma classe TPessoa, como enumeration.

[Enumeration(etInteger,'0,1')]
TSexo = (sxMasculino,sxFeminino);

TPessoa = class
[Column('Sexo', ftSmallInt)]
property sexo : TSexo;
end;


Acontece que ao tentar salvar este objeto no banco, estou recebendo o seguinte erro:

Invalid type. Type enumerator supported [ftBoolena,ftInteger,ftFixedChar,ftString]

o trecho do código que retorna este erro é o seguinte, (ormbr.rtti.helper) linha 208
   
Código:
if LValue.AsOrdinal >= 0 then
    begin
      case AFieldType of
        ftFixedChar: Result := TValue.From<Char>(LEnumeration.EnumValues[LValue.AsOrdinal][1]);
        ftString:    Result := TValue.From<string>(LEnumeration.EnumValues[LValue.AsOrdinal]);
        ftInteger:   Result := TValue.From<Integer>(Integer(LValue.AsOrdinal));
        ftBoolean:   Result := TValue.From<Boolean>(Boolean(LValue.AsOrdinal));
      else
        raise Exception.Create('Invalid type. Type enumerator supported [ftBoolena,ftInteger,ftFixedChar,ftString]');  
      end



Isto significa que não posso utilizar o tipo smallInt em um campo enumerado?


Arquivo(s) anexado(s) Miniatura(s)
   
Responder
#2
(19-12-2017, 02:25 PM)willian Escreveu: Eu setei uma propriedade de uma classe TPessoa, como enumeration.

[Enumeration(etInteger,'0,1')]
TSexo = (sxMasculino,sxFeminino);

TPessoa = class
[Column('Sexo', ftSmallInt)]
property sexo : TSexo;
end;


Acontece que ao tentar salvar este objeto no banco, estou recebendo o seguinte erro:

Invalid type. Type enumerator supported [ftBoolena,ftInteger,ftFixedChar,ftString]

o trecho do código que retorna este erro é o seguinte, (ormbr.rtti.helper) linha 208
   
Código:
if LValue.AsOrdinal >= 0 then
    begin
      case AFieldType of
        ftFixedChar: Result := TValue.From<Char>(LEnumeration.EnumValues[LValue.AsOrdinal][1]);
        ftString:    Result := TValue.From<string>(LEnumeration.EnumValues[LValue.AsOrdinal]);
        ftInteger:   Result := TValue.From<Integer>(Integer(LValue.AsOrdinal));
        ftBoolean:   Result := TValue.From<Boolean>(Boolean(LValue.AsOrdinal));
      else
        raise Exception.Create('Invalid type. Type enumerator supported [ftBoolena,ftInteger,ftFixedChar,ftString]');  
      end



Isto significa que não posso utilizar o tipo smallInt em um campo enumerado?

Tente tratar assim o enumerador
[Enumeration(TEnumType.etInteger, '0, 1, 2, 9')]

  Juliomar Marchetti
  Moderador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder


Possíveis Tópicos Relacionados...
Tópico: Autor Respostas: Visualizações: Última Mensagem
  ormbr.types.database Gr@c@ 1 497 11-11-2019, 11:06 AM
Última Mensagem: ailtonbrc
  Executar uma StoredProcedured com ORMBr Gr@c@ 0 295 23-09-2019, 06:11 PM
Última Mensagem: Gr@c@
  Como gravar TBlob de Stream marson 0 720 31-05-2019, 12:14 PM
Última Mensagem: marson
  Como Povoar classes de tabelas usando joins Deivison Davi Albring 2 1,930 15-03-2019, 03:21 PM
Última Mensagem: Deivison Davi Albring
  Ormbr com restdataware Gedeba 2 2,214 09-03-2019, 10:00 AM
Última Mensagem: Gedeba
  ORMBr - Como Conhecer e Testar Isaque Pinheiro 9 9,280 08-11-2018, 06:14 AM
Última Mensagem: Isaque Pinheiro
  Mapeamento de herança - Como o ORMBr se comporta? willian 2 3,526 04-08-2018, 04:42 PM
Última Mensagem: Isaque Pinheiro
  Ormbr (em produção) Osiel Gomes 1 2,546 15-05-2018, 01:24 PM
Última Mensagem: juliomar
  Erro depois de atualização (ormbr.typer.blob) Osiel Gomes 1 2,341 15-05-2018, 01:23 PM
Última Mensagem: juliomar
  Chamar TSessionObjectSet usando tipo genérico, é possível? willian 2 3,000 22-04-2018, 02:55 PM
Última Mensagem: Isaque Pinheiro

Saltar Fórum:


usuários a ver este tópico: 1 Visitante(s)