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?
EntityDac vs TMS Aurelius
Re: EntityDac vs TMS Aurelius
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:
An EntityDAC LINQ query:
Moreover, we haven't found out how to execute JOIN-containing queries in TMS Aurelius - and here is an example in EntityDAC:
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
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;
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;
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;
Re: EntityDac vs TMS Aurelius
well said, thank you
looking forward for the final version, seems your product the way to go
looking forward for the final version, seems your product the way to go
Re: EntityDac vs TMS Aurelius
We plan to release EntityDAC within a month.