Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Problema ao alterar registro
#1
Boa noite, sou novo com o ORM e ao implementar em meus projetos surgiram alguns problemas e dúvidas. Ao alterar ou excluir um registro as alterações estão sendo aplicadas a todos os registros. Por exemplo, quando altero o nome de um usuário para Carlos todos os usuário recebem o nome de Carlos, ou quando apago um registro, todos os registros da mesma tabela são apagadas juntos.
Não estou conseguindo entender onde estou errando, será que existe algum parâmetro em que eu configure isso?

Desde já agradeço qualquer ajuda.
Responder
#2
(06-05-2018, 08:38 PM)Warley Xavier Escreveu: Boa noite, sou novo com o ORM e ao implementar em meus projetos surgiram alguns problemas e dúvidas. Ao alterar ou excluir um registro as alterações estão sendo aplicadas a todos os registros. Por exemplo, quando altero o nome de um usuário para Carlos todos os usuário recebem o nome de Carlos, ou quando apago um registro, todos os registros da mesma tabela são apagadas juntos.
Não estou conseguindo entender onde estou errando, será que existe algum parâmetro em que eu configure isso?

Desde já agradeço qualquer ajuda.

Para mudar tudo, é porque no seu modelo provavelmente não exista o attributo   [PrimaryKey('nomecampo', 'Chave primária')]

Estude mais os modelos dos exemplos que seguem com os fontes no repositório.

  Isaque Pinheiro
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder
#3
(07-05-2018, 09:16 AM)Isaque Pinheiro Escreveu:
(06-05-2018, 08:38 PM)Warley Xavier Escreveu: Boa noite, sou novo com o ORM e ao implementar em meus projetos surgiram alguns problemas e dúvidas. Ao alterar ou excluir um registro as alterações estão sendo aplicadas a todos os registros. Por exemplo, quando altero o nome de um usuário para Carlos todos os usuário recebem o nome de Carlos, ou quando apago um registro, todos os registros da mesma tabela são apagadas juntos.
Não estou conseguindo entender onde estou errando, será que existe algum parâmetro em que eu configure isso?

Desde já agradeço qualquer ajuda.

Para mudar tudo, é porque no seu modelo provavelmente não exista o attributo   [PrimaryKey('nomecampo', 'Chave primária')]

Estude mais os modelos dos exemplos que seguem com os fontes no repositório.

Na verdade me atentei bem a este detalhe, e mesmo com o atributo Primary Key o problema persiste. Segue o model de teste que utilizei.

unit UPessoa;

interface

uses
  Classes,
  DB,
  SYSUtils,
  ormbr.mapping.attributes,
  ormbr.types.mapping,
  ormbr.mapping.register;

type
  [Entity]
  [Table('pessoa','')]
  [PrimaryKey('pessoa_id', 'Chave primária')]
  TPessoa = class

    private

      FId: Integer;
      FNome: String;
      FDinheiro: Double;

      procedure setId(const Value: Integer);
      function getId: Integer;
      procedure setNome(const Value: String);
      function getNome: String;
      procedure setDinheiro(const Value: Double);
      function getDinheiro: Double;

    public

      [Restrictions([NoUpdate, NotNull])]
      [Column('Pessoa_id', ftInteger)]
      [Dictionary('Código','Mensagem de validação','','','',taCenter)]
      property Id: Integer read getId write setId;

      [Column('Pessoa_nome', ftString)]
      [Dictionary('Nome','Mensagem de validação','','','',taLeftJustify)]
      property Nome: String  read getNome write setNome;

      [Column('Pessoa_dinheiro', ftFloat)]
      [Dictionary('Money')]
      property Dinheiro: Double read getDinheiro write setDinheiro;

  end;

implementation

{ TPessoa }

function TPessoa.getDinheiro: Double;
begin
  Result := FDinheiro;
end;

function TPessoa.getId: Integer;
begin
  Result := FId;
end;

function TPessoa.getNome: String;
begin
  Result := FNome;
end;

procedure TPessoa.setDinheiro(const Value: Double);
begin
  FDinheiro := Value;
end;

procedure TPessoa.setId(const Value: Integer);
begin
  FId := Value;
end;

procedure TPessoa.setNome(const Value: String);
begin
  FNome := Value;
end;

initialization

  TRegisterClass.RegisterEntity(TPessoa);

end.
Responder
#4
(08-05-2018, 01:00 PM)Warley Xavier Escreveu:
(07-05-2018, 09:16 AM)Isaque Pinheiro Escreveu:
(06-05-2018, 08:38 PM)Warley Xavier Escreveu: Boa noite, sou novo com o ORM e ao implementar em meus projetos surgiram alguns problemas e dúvidas. Ao alterar ou excluir um registro as alterações estão sendo aplicadas a todos os registros. Por exemplo, quando altero o nome de um usuário para Carlos todos os usuário recebem o nome de Carlos, ou quando apago um registro, todos os registros da mesma tabela são apagadas juntos.
Não estou conseguindo entender onde estou errando, será que existe algum parâmetro em que eu configure isso?

Desde já agradeço qualquer ajuda.

Para mudar tudo, é porque no seu modelo provavelmente não exista o attributo   [PrimaryKey('nomecampo', 'Chave primária')]

Estude mais os modelos dos exemplos que seguem com os fontes no repositório.

Na verdade me atentei bem a este detalhe, e mesmo com o atributo Primary Key o problema persiste. Segue o model de teste que utilizei.

unit UPessoa;

interface

uses
  Classes,
  DB,
  SYSUtils,
  ormbr.mapping.attributes,
  ormbr.types.mapping,
  ormbr.mapping.register;

type
  [Entity]
  [Table('pessoa','')]
  [PrimaryKey('pessoa_id', 'Chave primária')]
  TPessoa = class

    private

      FId: Integer;
      FNome: String;
      FDinheiro: Double;

      procedure setId(const Value: Integer);
      function getId: Integer;
      procedure setNome(const Value: String);
      function getNome: String;
      procedure setDinheiro(const Value: Double);
      function getDinheiro: Double;

    public

      [Restrictions([NoUpdate, NotNull])]
      [Column('Pessoa_id', ftInteger)]
      [Dictionary('Código','Mensagem de validação','','','',taCenter)]
      property Id: Integer read getId write setId;

      [Column('Pessoa_nome', ftString)]
      [Dictionary('Nome','Mensagem de validação','','','',taLeftJustify)]
      property Nome: String  read getNome write setNome;

      [Column('Pessoa_dinheiro', ftFloat)]
      [Dictionary('Money')]
      property Dinheiro: Double read getDinheiro write setDinheiro;

  end;

implementation

{ TPessoa }

function TPessoa.getDinheiro: Double;
begin
  Result := FDinheiro;
end;

function TPessoa.getId: Integer;
begin
  Result := FId;
end;

function TPessoa.getNome: String;
begin
  Result := FNome;
end;

procedure TPessoa.setDinheiro(const Value: Double);
begin
  FDinheiro := Value;
end;

procedure TPessoa.setId(const Value: Integer);
begin
  FId := Value;
end;

procedure TPessoa.setNome(const Value: String);
begin
  FNome := Value;
end;

initialization

  TRegisterClass.RegisterEntity(TPessoa);

end.

Atualize seus fontes e varifique novamente, o recurso está funcionando eu uso o ORMBr todo em produção em sistemas meu.

  Isaque Pinheiro
  Fundador 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
  Problema com associação de três classes Jose Varela 5 2,906 22-04-2018, 02:10 PM
Última Mensagem: Isaque Pinheiro

Saltar Fórum:


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