EntityDAC - ORM for Delphi with LINQ support
EntityDAC is an ORM for Delphi with LINQ support. It provides a powerful framework
that allows to perform object-relational mapping of database objects to Delphi classes
with full support for encapsulation, inheritance, polymorphism and other OOP features.
To retrieve data from a database, LINQ is used as a database independent query engine.
In addition, there is a feature-rich ORM modeling tool available Entity Developer,
that allows to create and edit your ORM models visually, and generate Delphi entity
classes by this model automatically.
Database-First, Model-First & Code-First development
There are several approaches to database application development. Database-First
— a database is developed first, then a data model and application classes
are generated on the basis of the existing database. Model-First — a data
model is developed first in a model developer tool, then a database and application
classes are generated by this model. Code-First — in this case, application
classes are the original source, on the basis of which a database can be generated,
as well as a model, if necessary. When developing applications using EntityDAC,
you will be able to use all the three ways.
Visual ORM Model Designer with Code generation
Entity Developer allows you to create and edit ORM models visually, without typing
a line of XML code or manual describing class attributes in Delphi code. It supports
creation of all kinds of mapping, such as table splitting, mapping entity to several
tables, complex types, inheritance hierarchies, etc. Code generation is very flexible
due to using T4-like templates, allowing virtually anything you may want for code
generation, and you may even create your own templates for other programming languages.
Using ORM when developing your applications must not only accelerate development
of the application itself, but also unify the application code and make applications
independent of the specifics and syntax of the SQL database for which it is developed,
that will allow to support multiple databases in your application with no effort.
Therefore, Language Integrated Query (LINQ) is used in EntityDAC as a query language.
Using LINQ also significantly simplifies writing and further support of queries,
since, at this, the Code completion Delphi engine is used when typing LINQ keywords,
class names, their attributes, etc. And in the same way, LINQ queries syntax check
is performed at the stage of application compilation.
Object-relational mapping of database tables to Delphi classes can be performed
not only to classes inherited from a basic TEntity class, but to custom classes
inherited form TObject as well. Such an approach allows using EntityDAC for development
of new applications, as well as simply introduce ORM to already existing projects.
In addition, different mapping methods are supported: code mapping, attribute mapping
and XML mapping.
Entity & Query Cache
To increase application performance, EntityDAC allows to cache metadata, all entities
loaded from the database, LINQ queries, and much more. Such caching allows to avoid
multiple loading of the same data and vastly improve performance in comparison to
using the standard Data Access Components.