Are there any frameworks/libraries for Delphi that come close to the functionality offered by Bold/Eco?

1.6k views Asked by At

Not sure what happened to Bold/Eco during the Borland/Codegear/Embarcadero transition but I sure miss it in the newer versions of Delphi. Anyone know of a framework that comes close?

If not, maybe you could suggest a combination of libraries and components that comes close.

5

There are 5 answers

3
Hugues Van Landeghem On

I think that you can do the job with TMS Aurelius and TMS Data Modeler

Here is a interresting link

4
Jeroen Wiert Pluimers On

hcOPF seems to be the only real ORM for Delphi win32, but it does not yet come close.

For UML modelling and such for Delphi win32(or C#), I recommend Model Maker.

Both tools have Delphi 2010 support.

--jeroen

1
AudioBubble On

The alternatives are list of OPFs for Delphi win32 (with a short description for each one).

I have only ever used Bold for Delphi (and still do) but I don't think any of the alternatives come even close in the feature set. And that I suppose is the key, which features are important to you ? If you don't need everything Bold provides maybe you can settle on one of the alternatives.

Alternatively, you can still use Bold, the latest release is Bold for Delphi 2006 and hope that Embarcadero eventually open sources it, or continues development. There is a constant user pressure to do something with Bold, but Embarcadero seems to handle pressure well.

2
A.Bouchez On

Begin Edit/update:

Since this answer was published, the framework was enhanced a lot, especially to supply all needed features for implementing true Domain-Driven Design:

  • Database agnosticism (not only SQLite3, but any database, including MS SQL or Oracle) of the ORM (even with the Delphi Starter edition);
  • Interface-based services, similar to WCF;
  • Very fast http.sys event-driven HTTP server, running in Kernel mode;
  • Ready to work with AJAX clients;
  • A lot of improvements and fixes;
  • It is now called Synopse mORMot Framework.

With all advantages of Delphi, i.e. small and fast executable, no runtime/framework required, all source code provided (no black box approach), no specific OS nor additional costs.

See this blog article to find out how mORMot is probably the first Delphi framework providing all bricks necessary to implement Domain-Driven Design. With a lighter and faster solution than the "classic" Java or .Net implementations.

End Edit/update

I've developed an ORM RESTful JSON based framework, using SQlite3 for its database persistence.

It's not so complete than Bold or OPF, of course (no UML nor OCL), but it works, and is tested with Delphi 7 up to Delphi 2010. And it's still maintained, and will be forever, because it's free and opensource.

You've interesting features like integrated User Interface generation and i18n, reporting and export to PDF, client/server services, integrated unit testing. It uses JSON for data transmission, and a RESTful architecture over in-process communication, windows GDI messages, named pipes, or HTTP/1.1. So it could be used for developing AJAX applications.

This framework integrates gracefully with our SynProject tool, which creates documentation from the source code, with nice graphs and complete document traceability (it has been used to fulfill IEC 62304 requirements for a medical SW we wrote with this framework). So you don't have UML, but you have documentation and diagrams available at hand.

If you're interested in ORM and Delphi, you're welcome joining the adventure of Open Source! http://blog.synopse.info/category/Open-Source-Projects/SQLite3-Framework

1
Daniele Teti On

This is One of the bigger lack in the today's Delphi. Having only an old TDataset paradigm is not enough for complex projects.

Write a simple active record in Delphi 2010 is not difficult. But for complex project you need some datamapper with external config file.

I'm writing a simple Hibernate for Delphi (DORM aka Delphi Object Relational Mapper). If someone want to participate send an email to d [dot] teti at bitTime [dot] it.

eg. following is a unit test for 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;

Someone interested?