Um conhecimento só é válido quando compartilhado.

segunda-feira, 17 de abril de 2017

ORMBr - Versão 1.3.3 (Abr 2017)

  • Melhoria - Implementado recurso para atualizar dados da tabela externa com relacionamento OneToOne quando a coluna chave de relacionamento for mudada.
  • Melhoria - Otimização no método Open(), para que o SELECT seja construído somente uma vez.
  • Melhoria - Refatoração nos métodos Open() e Find(), para aceitarem o parâmetro ASQL como String.
  • Melhoria - Renomeado método GetNextPacket para NextPacket.
  • Melhoria - Liberado o método NextPacket, para ser chamado pela aplicação, caso a propriedade AutoNextPacket = False;
  • Melhoria - Refatoração nos métodos DisableDataSetEvents e EnableDataSetEvents.
  • Melhoria - Grande refatoração para aumento de performance, passando a usar mais informações mapeadas do objeto e menos RTTI.
  • Correção - Ajuste feito para respeitar a paginação de registros, quando passado um comando SELECT pelo método Open() e Find() direto, não estava sendo feito paginação nenhuma.
  • Novo - Atualização do demo que não usa dataset, mostrando como criar um campo Aggregate, direto na class totalizando determinado campo.
  • Novo - Criado método FindWhere(AWhere: string), esse método adiciona a clausula WHERE ao final do comando SELECT montado, passando assim um filtro para restringir o retorno de registros do banco de dados em um TObjectList<M>
  • Novo - Criado método OpenWhere(AWhere: string), esse método adiciona a clausula WHERE ao final do comando SELECT montado, passando assim um filtro para restringir o retorno de registros do banco de dados em um IDBResultSet.
  • Novo - Criado a propriedade AutoNextPacket, para que o método NextPacket possa ser controlado pela aplicação, valor padrão é TRUE;
  • Novo - Criado interface ICommandMonitor que irá monitorar todos os comandos executado pelo ORMBr e mostrar em uma tela o que foi executado. Funcionalidade mostrada no demo na pasta ..\ORMBr\Demo\Data\FireDAC.
  • Novo - Driver TFactorySQLite para acesso nativo ao SQLite, o driver usa componente de terceiro, as units agora fazem parte do projeto ORMBr e está na pasta ..\ORMBr\Source\External\SQLite, podem ser usadas sem precisar instalar o componente na IDE, basta instânciar o componente direto na aplicação.
Exemplo :
 FDatabase := TSQLiteDatabase.Create(Self);
 FDatabase.Filename := '..\Database\database.db3';

9 comentários :

  1. Oi Isaque blz?
    Estava tentando entender o ORMBr e estava fazendo um teste com Banco Firebird.
    Percebi que o ORMBr não trabalhada com AutoInc do Firebird usando os Generator onde o FDMenTable não tem essa propriedade.
    Você já pensou em usar o FDQuery onde ele também é um dataset e contem todas as propriedades de arquivo Generator do Firebird , kEYfield AutoiNC etc...
    Antigamente usávamos SQLQuery DataSetProvider e o ClientDataSet hoje podemos usar somente o FDQuery ele faz o papel de todos esse componentes.
    Antigamento usávamos TClientDataSet(DsCrud.DataSet).Delete; TClientDataSet(DsCrud.DataSet).ApplyUpdates(-1);

    e hoje podemos trocar somemte para
    TFDQuery(DsCrud.DataSet).Delete;
    TFDQuery(DsCrud.DataSet).ApplyUpdates(-1);

    e assim usando somente o poderoso componente FDQuery do Firedac. Pensa em colocar o FDQuery no ORMBr penso que vai ficar com um DataSet muito mais poderoso.
    Pode ser até que ja tenha algo como falei estou somente tentando entender ainda ORMBr.

    ResponderExcluir
    Respostas
    1. Bom dia Savério, o ORMBr trabalha sim com AutoInc, o que vc precisa é definir no Modelo o atributo para que ele identifique

      [Entity]
      [Table('master','')]
      [PrimaryKey('master_id', AutoInc, NoSort, True, 'Chave primária')]
      [Sequence('SEQUENCE')]
      Tmaster = class
      private
      ...

      Sobre o TFDQuery, ele já é usado internamente pelo ORMBr quando se trabalha com FireDAC, na ponta onde vc está citando o FDQuery não traz vantagem nenhuma, pois o FDMemTable é o nível mais baixo, e faz exatamente a finalidade, que o ORMBr precisa somente ter dados em cache.
      Vc já deu uma assistida nesse video https://www.youtube.com/watch?v=fJ_KtZbK7Ag&feature=youtu.be

      Excluir
  2. Oi Isaque blz, estou estudando o ORMBr e fiz um teste com ele, usei o banco de dados Firebird para os meus testes, e percebi o seguinte com meus testes.
    Quando criamos um Modelo ormbr.model.grupo as variáveis dos campos String ele coloca uma expressão NULLABLE FDESCRICAO: Nullable;. e quando fui fazer o applyupdates da um erro de tapcasting.
    Porem quando tiro a expressão NULLABLE FDESCRICAO: String; colocando o tipo string diretamente o erro não acontece mais, isso só ocorre em string tirando o NULLABLE tudo funcionou perfeitamente o applyupdates o autoincremento o Master/Detail. estou testando e estou gostando, obrigado e um abraço.

    type
    [Entity]
    [Table('COR', '')]
    [PrimaryKey('ID_COR', NotInc, NoSort, False, 'Chave primária')]
    TCOR = class
    private
    { Private declarations }
    FID_COR: Integer;
    FDESCRICAO: Nullable;
    public
    { Public declarations }
    [Restrictions([NotNull])]
    [Column('ID_COR',ftInteger)]
    [Dictionary('ID_COR', 'Mensagem de validação', '', '', '', taCenter)]
    property ID_COR: Integer Index 0 read FID_COR write FID_COR;

    [Column('DESCRICAO', ftString, 50)]
    [Dictionary('DESCRICAO', 'Mensagem de validação', '', '', '', taLeftJustify)]
    property DESCRICAO: Nullable Index 1 read FDESCRICAO write FDESCRICAO;
    end;

    ResponderExcluir
    Respostas
    1. Savério Nullable não é um tipo generic para tratamento, tendo que definir o tipo para ele ex: Nullable < string >, Nullable < integer > etc.., ou seja os tipos que for definido com Nullable <> poderá receber o valor null nele.

      Excluir
    2. Percebi que o BLOG não está mostrando no seu post < string >, vou pegar seu código e fazer um teste com ele.

      Excluir
  3. Ativei sua inscrição no fórum, tive que colocar o recurso de ativação pois está tendo muito SPAM.

    ResponderExcluir
  4. ok valeu, mas faz um teste ai com firebird 3.0 e deixa o nullable vc vai ver que da erro, e assim que tirar o nullable o erro nao acontece mais abraco

    ResponderExcluir
  5. Respostas
    1. Não é Thiago,
      Lazarus não tem nova RTTI, só existe ainda a antiga,
      Lazaruz não reconhece Atributos de classe.

      Os Atributos henriquece o framework com recursos para facilitar nossa vida além do que o framework ORM se propoe.

      Excluir

SAC Automação Delphi e Lazarus

SAC Automação Delphi e Lazarus
Assine nosso SAC Automação Delphi e Lazarus para ter suporte técnico especializado em desenvolvimento

Quem sou eu

Minha foto

Proprietário/Administrador de Empresa em TI (Tecsis Informática)
  • Autor dos projetos OpenSource ORMBr, e DBCBr
  • Autor dos componentes ACBrInstall, ACBrSped, ACBrPaf, ACBrInStore, ACBrDownload.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores

Google+ Seguindores