2010-05-31 13 views
14

Delphi 2010 ha nuove funzionalità per quanto riguarda RTTI, che ho letto renderà più facile per gli strumenti ORM e un codice molto più pulito.Esiste un nuovo ORM per Delphi 2010?

ma non ho trovato alcun ORM incorporato queste funzionalità.

Pensi che l'Embarcadero dovrebbe costruito uno e includerlo con Delphi

+0

penso attualmente non vale la pena per un fornitore di indirizzare esclusivamente D2010 –

+0

@Marco: Delphi 2010 ha introdotto estesa RTTI che è necessario serializzare/deserializzare tutti i campi oggetto (compresi privati ​​e protetti) e Attributi che sono un modo molto potente per aggiungere metadati alle definizioni di classe – mjn

+0

Sto votando per chiudere questa domanda come off-topic perché è un parere a tempo indeterminato domanda. –

risposta

1

cosa esattamente le caratteristiche stai parlando?

Ci sono diversi ORM per Delphi: ORM for DELPHI win32

+1

Tuttavia, nessuno di questi è esclusivo per RTTI di Delphi 2010. –

+0

Perché hai bisogno di * ORM * esclusivi? –

+1

come apparirebbe un ORM che supporta Delphi 2 al 2010? Userebbe il minimo comune denominatore delle funzionalità linguistiche disponibili. Quindi supporto migliore solo per 2010+ e utilizzo di RTTI e attributi estesi nell'API ORM, come ORM per .Net e la piattaforma Java. – mjn

8

Il framework Spring (che utilizza Delphi 2010 Ponte RTTI) ha un Entity Framework sulla sua tabella di marcia:

http://code.google.com/p/delphi-spring-framework/

Delphi Spring Framework è un progetto internazionale open source , la cui missione è fornire un robusto framework di infrastruttura che sarà aiutare gli sviluppatori Delphi a costruire solidi, enterprise e le librerie di classi enterprise flessibili e estendibili basati su sulla piattaforma WinCaddy® Delphi® 2010 per Win32.

+0

sembra promettente – DelphiDev

8

Un altro ORM Delphi 2010+ appena rilasciato è DORM. Fa uso delle nuove funzionalità RTTI ed è in grado di mantenere qualsiasi oggetto Delphi semplice.

Prendere forse uno sguardo ad una ORM Client-Server come mORMot - che funziona bene con Delphi 2010 - il client-server dimensione è degno di nota in un mondo SOA.

+0

Vedere http://blog.synopse.info/post/2012/07/12/One-ORM-to-rule-them-all per alcuni punti su mORMot rispetto ad altri ORM esistenti. –

3

TMS Aurelius utilizza le nuove funzionalità RTTI introdotte nella recente versione Delphi. Utilizza anche i generici, l'overloading dell'operatore e altre nuove funzionalità di Delphi che lo rendono compatibile solo con Delphi 2010 e versioni successive.

4

DORM, Delphi ORM è un nuovo framework OpenSource ORM per Delphi utilizzabile da DelphiXE + (dovrebbe funzionare anche su D2010, ma non è stato testato su quella versione). Supporta (e usa) tutte le nuove funzionalità RTTI. Permette il mapping di file, attributi e convenzione sulla configurazione. Esistono grandi sistemi di produzione basati su di esso. Sarà integrato in Delphi Spring Framework dalla prossima major release. È sviluppato da una piccola comunità internazionale (6 persone). http://code.google.com/p/delphi-orm/

Per mostrare alcune caratteristiche di base, questo è un unittest effettivamente utilizzato.

procedure TTestDORM.TestCRUD; 
var 
    p1: TPerson; 
    p1asstring: string; 
    id: integer; 
begin 
    p1 := TPerson.NewPerson; 
    try 
    Session.Save(p1); 
    p1asstring := p1.ToString; 
    id := p1.id; 
    Session.Commit; 
    finally 
    p1.Free; 
    end; 

    Session.StartTransaction; 
    p1 := Session.Load<TPerson>(id); 
    try 
    CheckEquals(p1asstring, p1.ToString); 
    Session.Commit; 
    finally 
    p1.Free; 
    end; 

    Session.StartTransaction; 
    p1 := Session.Load<TPerson>(id); 
    try 
    p1.FirstName := 'Scott'; 
    p1.LastName := 'Summer'; 
    p1.Age := 45; 
    p1.BornDate := EncodeDate(1965, 1, 1); 
    Session.Update(p1); 
    p1asstring := p1.ToString; 
    Session.Commit; 
    finally 
    p1.Free; 
    end; 

    Session.StartTransaction; 
    p1 := Session.Load<TPerson>(id); 
    try 
    CheckEquals(p1asstring, p1.ToString); 
    Session.Delete(p1); 
    Session.Commit; 
    finally 
    p1.Free; 
    end; 

    Session.StartTransaction; 
    p1 := Session.Load<TPerson>(id); 
    try 
    CheckNull(p1); 
    Session.Commit; 
    finally 
    p1.Free; 
    end; 
end; 

P.S.Sono l'autore principale e principale di DORMITORIO

+0

Vale anche la pena di dire che ci sono anche alcune forcelle di DORM su google code (in particolare quella di Robert Love). – menjaraz

+0

@Daniele Ho citato DORM nella mia risposta alcuni mesi fa. :) –

Problemi correlati