2010-05-31 12 views
14

Delphi 2010 ma nowe funkcje dotyczące RTTI, które przeczytałem ułatwi narzędzia ORM i znacznie czystszy kod.Czy istnieje nowa ORM dla Delphi 2010?

, ale nie znalazłem żadnych ORM uwzględnionych w tych funkcjach.

Czy uważasz, że Embarcadero powinna zawierać wbudowany jeden i to z Delphi

+0

myślę obecnie nie warto dla sprzedawcy, adresowane wyłącznie D2010 –

+0

@Marco: Delphi 2010 wprowadziła rozszerzoną RTTI który jest wymagany do serializacji/deserializacji wszystkich pól obiektów (w tym prywatnych i chronionych) oraz atrybutów, które są bardzo skutecznym sposobem dodawania metadanych do definicji klas. – mjn

+0

Głosuję, aby zamknąć to pytanie jako niezwiązane z tematem, ponieważ jest to opinia otwarta pytanie. –

Odpowiedz

1

Co dokładnie cechy ty mówisz?

Istnieje kilka ORMs dla Delphi: ORM for DELPHI win32

+1

Żadne z nich nie są jednak dostępne wyłącznie dla RTTI Delphi 2010. –

+0

Dlaczego potrzebujesz * ekskluzywnych * ORMów? –

+1

jak wygląd ORM, który obsługuje Delphi 2 do 2010? Używałby najmniej wspólnego mianownika dostępnych funkcji językowych. Lepsze wsparcie tylko w wersji 2010+ i korzystaj z rozszerzonych interfejsów RTTI i atrybutów w interfejsie API ORM, takich jak ORM dla .Net i platformy Java. – mjn

8

Spring Framework (który używa Delphi 2010 rozszerzony RTTI) ma Entity Framework na jej planie:

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

Delphi Spring Framework jest międzynarodowy projekt open source, , którego misją jest zapewnienie solidnego szkieletu infrastruktury , który będzie pomóż programistom Delphi zbudować solidne, elastyczne i rozszerzalne aplikacje korporacyjne oparte na aplikacjach i bibliotekach klas opartych na na platformie Win32 platformy Embarcadero® Delphi® 2010 for .

+0

wygląda obiecująco – DelphiDev

8

Innym właśnie wydanym ORM Delphi 2010+ jest DORM. Korzysta z nowych funkcji RTTI i jest w stanie utrzymać każdy zwykły obiekt Delphi.

Take może spojrzeć na Client-Server ORM jak mORMot - który współpracuje z Delphi 2010 - klient-serwer wymiar warto wspomnieć w świecie SOA.

+0

Zobacz http://blog.synopse.info/post/2012/07/12/One-ORM-to-rule-them-all dla niektórych punktów dotyczących mORMot w odniesieniu do innych istniejących ORMów. –

3

TMS Aurelius wykorzystuje nowe możliwości RTTI wprowadzone w najnowszej wersji Delphi. Wykorzystuje również generyczne, przeciążanie operatorów i inne nowe funkcje Delphi, co czyni je kompatybilnymi tylko z Delphi 2010 i nowszymi.

4

DORM, ORM Delphi to nowa struktura ORM OpenSource dla Delphi do wykorzystania z DelphiXE + (powinna również działać w D2010, ale nie jest testowana w tej wersji). Obsługuje (i wykorzystuje) wszystkie nowe funkcje RTTI. Zezwala na mapowanie plików, atrybutów i odwzorowań konwencji. Są na nim oparte duże systemy produkcyjne. Zostanie on włączony do Delphi Spring Framework od następnego wydania głównego. Jest rozwijany przez małą społeczność międzynarodową (6 osób). http://code.google.com/p/delphi-orm/

Aby wyświetlić niektóre podstawowe funkcje, jest to aktualnie używany test instalacji.

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.Jestem głównym i główny autor akademiku

+0

Warto również dodać, że widżet DORM jest również dostępny w kodzie google (szczególnie w wersji Robert Love). – menjaraz

+0

@ Daniele Cytowałem DORM w mojej odpowiedzi kilka miesięcy temu. :) –

Powiązane problemy