I am learning LINQ to SQL (and planning to learn Entity Framework). Initially I used a abstraction layer to convert LINQ to SQL entities into a domain objects. Later I discovered the “Inheritance Mapping” option and removed the abstraction layer and started to use ORM entities directly as domain objects.
After some time, I got a road block when I don’t use abstraction layer. Please read it here: https://stackoverflow.com/questions/11470037/get-all-associate-composite-objects-inside-an-object-in-abstract-way
- Is it possible to achieve all tasks without using Abstraction layer over ORM?
- What are the rationale to decide have/not have abstraction layer?
REFERENCE:
- http://martinfowler.com/bliki/OrmHate.html
1
-
Depends on the tasks and the ORM used. both NHibernate and Entity Framework are feature rich which makes it very likely they can. NH also has many hooks you can implement to change its behaviour
-
abstracttions always have costs (learning, dependency, …) so unless the value they provide outperforms the costs they should be avoided. An ORM is already an abstraction which most of the time provides more value (when relational Database access is involved).