I am in the process of integrating a number of legacy systems. They each have different databases; and I will need to write data access code for most of them.
The database schemas cannot be changed (I might be able to apply some indexes and such, but tables and their columns must retain the structure). Some of the databases has an OK design, with appropiate relationsships and primary / foreign keys, and some of the other databases lacks that very much.
Which ORM would you choose for this task ? I would like to use the same ORM accross the project; and my requirements are:
- Ability to rename tables or columns in code; but retain the old name in the database.
- Reasonable code generation
- Efficient LINQ support (LINQ queries against the data model should be translated to efficient SQL).
- Generated data classes should preferably be POCO's.
- Preferably support for different database engines.
I currently have the most experience with LINQ-To-SQL; but I have a feeling it might be the wrong choice for this project. I am willing to invest some time in learning a new framework.