mini orm para delphi
A biblioteca é um experimento com RTTI e genéricos para obter acesso simples e orientado a objetos a dados de um banco de dados relacional.
var
ORM : TransfORM;
begin
ORM := TransfORM.Create();
O segundo passo é definir a interface de acordo com a fórmula:
I[TableName] = interface(ItransfORMEntity)
function [ColumnNameA] : TransfORMField;
function [ColumnNameB] : TransfORMField;
function [ColumnNameC] : TransfORMField;
[...]
end;
... onde o tableName é o nome da tabela no banco de dados e columninea, columnnameb etc. são os nomes das colunas que você deseja acessar na interface fornecida (eles não precisam ser tudo).
A última etapa é obter uma instância de interface contendo os dados de uma linha específica da tabela. Para fazer isso, chamamos o método GetInstance, fornecendo o valor da chave primária.
var
Entity : I[TableName];
PKValue : Integer;
begin
PKValue := 100; //primary key value
Entity := ORM.GetInstance<I[TableName], [PKType]>(PKValue, FDConnection);
Além do acesso aos campos da tabela, a classe Entidade também implementa métodos da interface:
ItransfORMEntity = interface(IInvokable)
function GetConnection(): TFDConnection;
function GetImmediateCommit(): Boolean;
function HasChanges() : Boolean;
function PrimaryKeyField() : TransfORMField;
procedure Commit(aInSubthread : Boolean = False);
procedure SetImmediateCommit(const aValue: Boolean);
property ImmediateCommit: Boolean read GetImmediateCommit write SetImmediateCommit;
property Connection: TFDConnection read GetConnection;
end;
Limitações atuais:
A biblioteca usa: Spring4D, Firedac