What are the pros & cons of using Entity Framework 4.1 Code-first over Model/Database-first with EDMX diagram?
I'm trying to fully understand all the approaches to building data access layer using EF 4.1. I'm using Repository pattern and IoC
.
I know I can use code-first approach: define my entities and context by hand and use ModelBuilder
to fine-tune the schema.
I can also create an EDMX
diagram and choose a code generation step that uses T4 templates to generate the same POCO
classes.
In both cases I end up with POCO
object which are ORM
agnostic and context that derives from DbContext
.
Database-first seems to be most appealing since I can design database in Enterprise Manager, quickly synch the model and fine-tune it using the designer.
So what is the difference between those two approaches? Is it just about the preference VS2010 vs Enterprise Manager?
I think the differences are:
Code first
Database first
Model first
I expect that in case of EF 4.1 there are several other features related to Code First vs. Model/Database first. Fluent API used in Code first doesn't offer all features of EDMX. I expect that features like stored procedures mapping, query views, defining views etc. works when using Model/Database first and DbContext
(I haven't tried it yet) but they don't in Code first.