不确定在Borland / Codegear / Embarcadero过渡期间Bold / Eco发生了什么,但我确实在新版本的Delphi中错过了它。有人知道一个接近的框架吗?
如果没有,也许你可以推荐一些图书馆和组件的组合。
答案 0 :(得分:4)
hcOPF似乎是Delphi win32唯一真正的ORM,但它还没有接近。
对于UML建模等,对于Delphi win32(或C#),我建议Model Maker。
这两个工具都支持Delphi 2010。
- 的Jeroen
答案 1 :(得分:4)
替代方案是list of OPFs for Delphi win32(每个方案的简短说明)。
我只使用过Bold for Delphi(现在仍然如此),但我不认为任何替代品在功能集中都会接近。而且我认为这是关键,哪些功能对您很重要? 如果你不需要Bold提供的所有东西,也许你可以选择其中一种选择。
或者,您仍然可以使用Bold,最新版本是Bold for Delphi 2006,并希望Embarcadero最终开源,或继续开发。 用Bold做一些持续的用户压力,但Embarcadero似乎能很好地处理压力。
答案 2 :(得分:3)
这是今天德尔福的一大缺陷。只有一个旧的TDataset
范例对于复杂项目来说还不够。
在Delphi 2010中编写一个简单的活动记录并不困难。但对于复杂项目,您需要一些带有外部配置文件的 datamapper 。
我正在为Delphi编写一个简单的Hibernate(DORM又称Delphi对象关系映射器)。如果有人想参加,请发送电子邮件到d [dot] teti at bitTime [dot] it。
例如。以下是DORM的单元测试
procedure TTestDORM.TestUpdate;
var
p: TPersona; //TPersona is a PODO "Plain Old Delphi Object" TObject descendat
guid: string;
begin
p := TPersona.Create;
p.Nome := 'Daniele';
p.Cognome := 'Teti';
p.Eta := 30;
p.DataDiNascita := EncodeDate(1979,11,04);
Session.Save(p); //DORM do an INSERT
guid := p.guid;
Session.Commit;
Session.StartTransaction;
p := Session.Load(TypeInfo(TPersona), guid) as TPersona; //DORM do a SELECT
p.Nome := 'Peter';
Session.Save(p); //DORM do an UPDATE
Session.Commit;
CheckEquals(1, Session.Count(TPersona));
p := Session.Load(TypeInfo(TPersona), guid) as TPersona; //DORM do a SELECT
CheckEquals('Peter', p.Nome);
end;
有人感兴趣吗?
答案 3 :(得分:2)
开始编辑/更新:
自从这个答案发布以来,该框架得到了很大的改进,尤其是提供了实现 true 域驱动设计所需的所有功能:
Interface
- 基于服务,similar to WCF; http.sys
事件驱动的HTTP服务器,以内核模式运行; 具有Delphi的所有优点,即小而快的可执行文件,无需运行时/框架,提供所有源代码(无黑盒方法),无特定操作系统或额外成本。
请参阅this blog article,了解 mORMot 可能是第一个提供实现域驱动设计所需的所有砖块的Delphi框架。使用比“经典”Java或.Net实现更轻,更快的解决方案。
结束编辑/更新
我开发了一个基于ORM RESTful JSON的框架,使用SQlite3来实现数据库持久性。
它当然没有Bold或OPF那么完整(没有UML也没有OCL),但是它有效,并且经过Delphi 7测试直到Delphi 2010.它仍然保持,并且将永远保持,因为它是免费的开源。
您有一些有趣的功能,如集成用户界面生成和i18n,报告和导出到PDF,客户端/服务器服务,集成单元测试。它使用JSON进行数据传输,使用RESTful架构进行进程内通信,Windows GDI消息,命名管道或HTTP / 1.1。因此它可以用于开发AJAX应用程序。
该框架与我们的SynProject工具优雅地集成,该工具从源代码创建文档,具有漂亮的图形和完整的文档可追溯性(它已用于满足我们使用此框架编写的医疗软件的IEC 62304要求)。所以你没有UML,但你手头有文档和图表。
如果您对ORM和Delphi感兴趣,欢迎您加入开源之旅! http://blog.synopse.info/category/Open-Source-Projects/SQLite3-Framework
答案 4 :(得分:2)
我认为您可以使用TMS Aurelius和TMS Data Modeler
完成工作这是一个有趣的link