Page 1 of 1

EntityDac vs TMS Aurelius

Posted: Sun 09 Mar 2014 08:31
by devweb
I'm just new to the new ORM things, but I saw currently two products for Delphi (except few open sources ones like DORM).

How's your products compare to TMS Aurelius?

also are you planing to have a middle-tier products so we can get the objects from the server, as TMS did with TMS XData?

Re: EntityDac vs TMS Aurelius

Posted: Thu 13 Mar 2014 08:58
by AlexP
We haven't examined TMS Aurelius in details, but we can list some differences/advantages of EntityDAC.

If the database structure was modified, then to make changes in TMS Aurelius using DataModeler, the model must be regenerated. At this, all the changes made manually will be lost and have to be made anew. EntityDeveloper allows to transpose database structure changes to the model and vice versa - data model changes can be applied to the existing database.

For setting Delphi classes mapping to tables in the database, TMS Aurelius uses attribute class mapping. EntityDAC allows to set mapping not only using attribute mapping, but Code-Mapping and XML-Mapping as well.

TMS Aurelius allows to use either Integer fields or GUID as ID. We don't have such a restriction - fields with any types can be used as ID (string, date, float, etc.).

Queries in EntityDAC look more understandable and close to LINQ queries, than in TMS Aurelius.

A TMS Aurelius query:

Code: Select all

Results := Manager.CreateCriteria<TEstimate>
.CreateAlias('Customer', 'c')
.Add(TExpression.IsNotNull('IssueDate'))
.AddOrder(TOrder.Desc('c.Name'))
.List;
An EntityDAC LINQ query:

Code: Select all

var
  E: IEmpExpression;
  Query: ILinqQueryable;
begin
  E := DataContext.Emp;

  Query := Linq.From(E)
               .Where(E.Deptno <> null)
               .OrderByDescending(E.EName)
               .Select([E.EName, E.Job, E.Dept.DName]);

  Result := DataContext.GetEntities(Query);
end;
Moreover, we haven't found out how to execute JOIN-containing queries in TMS Aurelius - and here is an example in EntityDAC:

Code: Select all

var
  E: IEmpExpression;
  D: IDeptExpression;
  Query: ILinqQueryable;
begin
  E := DataContext.Emp;
  D := DataContext.Dept;

  Query := Linq.From(E)
               .Join(D).On(D.DeptNo = E.DeptNo)
               .Select([E.EName, D.DName]);

  Result := DataContext.GetEntities(Query);
end;
For the time being, we haven't considered support for a feature similar to TMS XData in TMS Aurelius. Maybe we will support such functionality in future

Re: EntityDac vs TMS Aurelius

Posted: Mon 17 Mar 2014 18:28
by devweb
well said, thank you

looking forward for the final version, seems your product the way to go :)

Re: EntityDac vs TMS Aurelius

Posted: Wed 19 Mar 2014 12:51
by AlexP
We plan to release EntityDAC within a month.