7

不确定在 Borland/Codegear/Embarcadero 过渡期间 Bold/Eco 发生了什么,但我肯定会在较新版本的 Delphi 中错过它。有人知道接近的框架吗?

如果没有,也许您可​​以建议组合使用接近的库和组件。

4

5 回答 5

4

hcOPF似乎是 Delphi win32 唯一真正的 ORM,但它还没有接近。

对于 UML 建模等 Delphi win32(或 C#),我推荐Model Maker

这两个工具都支持 Delphi 2010。

——杰伦

于 2010-08-03T21:21:46.837 回答
4

替代方案是Delphi win32 的 OPF 列表(每个都有简短描述)。

我只在 Delphi 中使用过 Bold(现在仍然使用),但我认为在功能集中没有任何替代方案可以接近。我认为这是关键,哪些功能对您很重要?如果您不需要 Bold 提供的所有东西,也许您可​​以选择其中一种选择。

或者,您仍然可以使用 Bold,最新版本是Bold for Delphi 2006,并希望 Embarcadero 最终开源它,或继续开发。使用 Bold 做某事的用户压力一直存在,但 Embarcadero 似乎可以很好地处理压力。

于 2010-08-03T21:26:49.140 回答
3

这是当今德尔福最大的不足之一。对于复杂的项目,只有一个旧的TDataset范式是不够的。

在Delphi 2010中写一个简单的活动记录并不难。但是对于复杂的项目,您需要一些带有外部配置文件的数据映射器。

我正在为 Delphi(DORM aka Delphi Object Relational Mapper)编写一个简单的 Hibernate。如果有人想参与,请在 bitTime [dot] 发送电子邮件给 d [dot] teti。

例如。以下是 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;

有人感兴趣吗?

于 2010-08-04T14:13:53.693 回答
2

我认为您可以使用 TMS Aurelius和 TMS Data Modeler完成这项工作

这是一个有趣的链接

于 2012-05-27T07:43:20.080 回答
2

开始编辑/更新:

自发布此答案以来,该框架得到了很大的增强,特别是提供了实现真正的领域驱动设计所需的所有功能:

  • ORM 的数据库不可知论(不仅是 SQLite3,还有任何数据库,包括 MS SQL 或 Oracle)(即使是 Delphi Starter 版本);
  • Interface基于服务,类似于 WCF
  • 非常快http.sys的事件驱动 HTTP 服务器,以内核模式运行;
  • 准备好与 AJAX 客户端合作;
  • 很多改进和修复;
  • 它现在称为Synopse mORMot 框架

具有 Delphi 的所有优点,即小而快的可执行文件,不需要运行时/框架,提供所有源代码(没有黑盒方法),没有特定的操作系统,也没有额外的成本。

请参阅此博客文章,了解mORMot如何可能是第一个提供实现领域驱动设计所需的所有模块的 Delphi 框架。使用比“经典”Java 或 .Net 实现更轻、更快的解决方案。

结束编辑/更新

我开发了一个基于 ORM RESTful JSON 的框架,使用 SQlite3 来实现其数据库持久性。

当然,它不像 Bold 或 OPF 那样完整(没有 UML 或 OCL),但它可以工作,并且在 Delphi 7 到 Delphi 2010 之前已经过测试。它仍然得到维护,并且将永远存在,因为它是免费和开源的。

您拥有有趣的功能,例如集成用户界面生成和 i18n、报告和导出为 PDF、客户端/服务器服务、集成单元测试。它使用 JSON 进行数据传输,以及基于进程内通信、Windows GDI 消息、命名管道或 HTTP/1.1 的 RESTful 架构。因此它可以用于开发 AJAX 应用程序。

该框架与我们的 SynProject 工具完美集成,该工具从源代码创建文档,具有漂亮的图形和完整的文档可追溯性(它已用于满足我们使用此框架编写的医疗软件的 IEC 62304 要求)。因此,您没有 UML,但您手头有可用的文档和图表。

如果您对 ORM 和 Delphi 感兴趣,欢迎您加入开源的冒险之旅! http://blog.synopse.info/category/Open-Source-Projects/SQLite3-Framework

于 2010-08-03T22:49:56.080 回答