EntityDac vs TMS Aurelius

Discussion of open issues, suggestions and bugs regarding EntityDAC
Post Reply
devweb
Posts: 16
Joined: Sat 02 Feb 2008 08:10

EntityDac vs TMS Aurelius

Post by devweb » Sun 09 Mar 2014 08:31

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?

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: EntityDac vs TMS Aurelius

Post by AlexP » Thu 13 Mar 2014 08:58

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

devweb
Posts: 16
Joined: Sat 02 Feb 2008 08:10

Re: EntityDac vs TMS Aurelius

Post by devweb » Mon 17 Mar 2014 18:28

well said, thank you

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

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: EntityDac vs TMS Aurelius

Post by AlexP » Wed 19 Mar 2014 12:51

We plan to release EntityDAC within a month.

Post Reply