Juliomar Marchetti, mais informacoes sobre ele podes ser encontradas no seu blog http://www.juliomarmarchetti.com.br, ele foi quem teve a ideia e colocou mao na massa para aproximar os interessados no projeto ORMBr ao seu autor, ele criou um Canal e um Grupo no Telegram o link para o Canal https://telegram.me/canalormbr e para o Grupo https://telegram.me/ormbr, convido a todos interessados a participar. O ORMBr ja da suporta a gerenciamento a banco de dados com base no modelo criado, ate o momento ja temos os drivers para os bancos: MSSQL, MySQL, Firebird, Interbase, SQLite e PostgreSQL, o recurso oferecido ate o momento sao criacao de tabelas com sua estrutura completa e com todos os recursos de coluna como TIPOS, NOT NULL, DEFAULT, juntamente com recursos como criacao de PrimaryKey, ForeignKey, Indexe e Check, isso funcional e testado, e nao acabou por ai, tem ainda o recurso de ADD COLUMN nova a estrutura, caso a coluna seja adicionado ao modelo e ser rodado o recurso de verificacao de metadata, segue abaixo um exemplo de como usar o recurso:procedure TForm1.Button1Click(Sender: TObject);var oManager: TDatabaseAbstract; oConnection: IDBConnection;begin // Instancia da class de conexao via FireDAC, segundo parametro // o Driver de qual Banco usado oConnection := TFactoryFireDAC.Create(FDConnection1, dnPostgreSQL); oManager := TDatabaseManager.Create(oConnection); oManager.BuildDatabase; for cDDL in oManager.GetCommandList do Memo1.Lines.Add(cDDL.Command); oManager.Free;end;Nota: Ate o momento a criacao do banco de dados, tem que ser feito manualmente, estou estudando a implementacao desse recurso via ORMBr, apos a criacao do banco vazio, so configura-lo ao engine de conexao que no ORMBr podem ser: FireDAC, DBExpress ou Zeos ate agora, em seguida criar a fabrica de conexao conforme engine de preferencia e rodas a atualizacao conforme modelo criado. Abaixo um exemplo de um modelo bem completo para estudo e teste:unit ormbr.model.person;interfaceuses Classes, DB, /// orm ormbr.mapping.attributes, ormbr.types.mapping, ormbr.mapping.register;type [Entity] [Table('Person','Tabela de pessoas')] [PrimaryKey('Id', NoSort, False, 'Chave primaria')] [Indexe('IDX_FirstName','FirstName', NoSort, True, 'Indexe por nome')] [Check('CHK_Age', 'Age >= 0')] TPerson = class private { Private declarations } FId: Integer; FFirstName: string; FLastName: string; FAge: Integer; FSalary: Double; public { Public declarations } [Restrictions([NoUpdate, NotNull])] [Column('Id', ftInteger)] [Dictionary('Codigo ID','Mensagem de validacao','0','','',taCenter)] property Id: Integer Index 0 read FId write FId; [Restrictions([NotNull])] [Column('FirstName', ftString, 40)] [Dictionary('Primeiro nome','Mensagem de validacao','','','',taLeftJustify)] property FirstName: String Index 1 read FFirstName write FFirstName; [Column('LastName', ftString, 30)] [Dictionary('Ultimo nome','Mensagem de validacao','','','',taLeftJustify)] property LastName: String Index 2 read FLastName write FLastName; [Restrictions([NotNull])] [Column('Age', ftInteger)] [Dictionary('Idade','Mensagem de validacao','0','','',taCenter)] property Age: Integer Index 3 read FAge write FAge; [Restrictions([NotNull])] [Column('Salary', ftCurrency, 18, 3)] [Dictionary('Preco','Mensagem de validacao','0','','',taRightJustify)] property Salary: Double Index 4 read FSalary write FSalary; end;implementationinitialization TRegisterClass.RegisterEntity(TPerson);end.