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.