2010-05-31 29 views
14

Delphi 2010 có các tính năng mới liên quan đến RTTI, mà tôi đọc nó sẽ làm cho nó dễ dàng hơn cho các công cụ ORM và mã sạch hơn nhiều.Có bất kỳ ORM mới nào cho Delphi 2010 không?

nhưng tôi chưa tìm thấy bất kỳ ORM nào kết hợp các tính năng này.

Bạn có nghĩ rằng Embarcadero nên xây dựng một và bao gồm nó với Delphi

+0

Tôi hiện nghĩ rằng nó không phải là đáng giá cho một nhà cung cấp độc quyền nhắm mục tiêu D2010 –

+0

@Marco: Delphi 2010 giới thiệu mở rộng RTTI mà là cần thiết để tuần tự hóa/deserialize tất cả các lĩnh vực đối tượng (bao gồm cả tư nhân và bảo vệ), và thuộc tính đó là một cách rất mạnh mẽ để thêm siêu dữ liệu cho các định nghĩa lớp học – mjn

+0

tôi bỏ phiếu để đóng câu hỏi này như là một chủ đề câu hỏi. –

Trả lời

1

Bạn đang nói đến những tính năng chính xác nào?

Có một số ORMs cho Delphi: ORM for DELPHI win32

+1

Không ai trong số đó là độc quyền cho RTTI của Delphi 2010 mặc dù. –

+0

Tại sao bạn cần * ORM độc quyền? –

+1

ORM trông như thế nào sẽ hỗ trợ Delphi 2 đến 2010? Nó sẽ sử dụng mẫu số chung ít nhất của các tính năng ngôn ngữ có sẵn. Vì vậy, hỗ trợ tốt hơn chỉ vào năm 2010 và sử dụng RTTI và Thuộc tính mở rộng trong API ORM, như ORM cho .Net và nền tảng Java làm. – mjn

8

Khung mùa xuân (trong đó sử dụng Delphi 2010 mở rộng RTTI) có một khung Entity trên lộ trình của nó:

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

Delphi Spring Framework là an dự án mã nguồn mở quốc tế, có nhiệm vụ là cung cấp khung cơ sở hạ tầng mạnh mẽ sẽ giúp các nhà phát triển Delphi xây dựng vững chắc, doanh nghiệp linh hoạt và có thể mở rộng các ứng dụng và thư viện lớp học dựa trên số trên nền tảng Embarcadero® Delphi® 2010 cho Win32.

+0

có vẻ đầy hứa hẹn – DelphiDev

8

Một chỉ phát hành Delphi 2010+ ORM là DORM. Nó sử dụng các tính năng RTTI mới và có thể tồn tại bất kỳ đối tượng Delphi đơn giản nào.

Hãy lẽ nhìn vào một Client-Server ORM như mORMot - mà hoạt động tốt với Delphi 2010 - Client-Server chiều là đáng nói trong một thế giới SOA.

+0

Xem http://blog.synopse.info/post/2012/07/12/One-ORM-to-rule-them-all đối với một số điểm về mORMot liên quan đến các ORM khác hiện có. –

3

TMS Aurelius sử dụng các khả năng RTTI mới được giới thiệu trong phiên bản Delphi gần đây. Nó cũng sử dụng generics, toán tử quá tải và các tính năng Delphi mới mà làm cho nó chỉ tương thích với Delphi 2010 và lên.

4

DORM, ORM Delphi là khung ORM mã nguồn mở mới cho Delphi có thể sử dụng được từ DelphiXE + (nó cũng hoạt động trên D2010 nhưng chưa được thử nghiệm trên phiên bản đó). Nó hỗ trợ (và sử dụng) tất cả các tính năng RTTI mới. Cho phép tệp, thuộc tính và ánh xạ quy ước trên cấu hình. Có những hệ thống sản xuất lớn dựa trên nó. Nó sẽ được tích hợp trong Delphi Spring Framework kể từ lần phát hành chính tiếp theo. Nó được phát triển bởi một cộng đồng quốc tế nhỏ (6 người). http://code.google.com/p/delphi-orm/

Để hiển thị một số tính năng cơ bản, đây là thực tế không được sử dụng thực sự.

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.Tôi là tác giả chính và chủ yếu của ký túc xá

+0

Nó cũng đáng nói rằng cũng có vài dĩa của DORM trên mã google (Đáng chú ý là Robert Love). – menjaraz

+0

@Daniele Tôi trích dẫn DORM trong câu trả lời của tôi vài tháng trước. :) –

Các vấn đề liên quan