Mini Orm para Delphi
La biblioteca es un experimento con RTTI y genéricos para obtener un acceso simple y orientado a objetos a los datos de una base de datos relacional.
var
ORM : TransfORM;
begin
ORM := TransfORM.Create();
El segundo paso es definir la interfaz de acuerdo con la fórmula:
I[TableName] = interface(ItransfORMEntity)
function [ColumnNameA] : TransfORMField;
function [ColumnNameB] : TransfORMField;
function [ColumnNameC] : TransfORMField;
[...]
end;
... Donde Tablename es el nombre de la tabla en la base de datos y Columnnamea, ColumnNameB, etc., son los nombres de las columnas a las que desea acceder en la interfaz dada (no tienen que ser todos).
El último paso es obtener una instancia de interfaz que contenga los datos de una fila específica de la tabla. Para hacer esto, llamamos al método GetInstance, dando el valor de la clave primaria.
var
Entity : I[TableName];
PKValue : Integer;
begin
PKValue := 100; //primary key value
Entity := ORM.GetInstance<I[TableName], [PKType]>(PKValue, FDConnection);
Además del acceso a los campos de tabla, la clase de entidad también implementa métodos de la interfaz:
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;
Limitaciones actuales:
La biblioteca usa: Spring4d, Firedac