Delphi 2010具有关于RTTI的新功能,我读到它将使ORM工具和更清晰的代码更容易。
但我没有发现任何ORM包含这些功能。
你认为Embarcadero应该建立一个并用Delphi包含它
答案 0 :(得分:8)
Spring框架(使用Delphi 2010扩展RTTI)在其路线图上有一个实体框架:
http://code.google.com/p/delphi-spring-framework/
Delphi Spring Framework是一个 国际开源项目, 其使命是提供强大的 基础设施框架将 帮助Delphi开发人员建立稳固, 灵活,可扩展的企业 基于应用程序和类库 在Embarcadero®Delphi®2010上 Win32平台。
答案 1 :(得分:8)
另一个刚刚发布的Delphi 2010+ ORM是DORM。它确实利用了新的RTTI功能,并且能够保留任何普通的Delphi对象。
或许看一下像<{3}}这样的客户端 - 服务器 ORM - 适用于Delphi 2010 - Client-Server 维度值得一提SOA世界。
答案 2 :(得分:4)
DORM,Delphi ORM是Delphi的一个新的ORM OpenSource框架,可以在DelphiXE +上使用(它也应该在D2010上运行,但它没有在该版本上进行测试)。它支持(并使用)所有新的RTTI功能。允许文件,属性和Convention Over Configuration映射。有基于它的大型生产系统。它将在下一个主要版本中集成到Delphi Spring Framework中。 它由一个小型国际社区(6人)开发。 http://code.google.com/p/delphi-orm/
为了显示一些基本功能,这是实际使用的单位测试。
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。我是DORM的主要作者和主要作者
答案 3 :(得分:3)
TMS Aurelius使用最近Delphi版本中引入的新RTTI功能。它还使用泛型,运算符重载和其他新的Delphi功能,这使得它只与Delphi 2010兼容。
答案 4 :(得分:1)
你在谈论什么功能?
Delphi有几个ORM:ORM for DELPHI win32
答案 5 :(得分:0)