代码优先
相对受欢迎,以为铁杆程序员不喜欢使用edmx xml来定义映射关系,那样太复杂。
完全的代码控制(自动生成的代码较难修改)
一般不会被数据库影响到,数据库只是存储,没有逻辑关系,EF框架会处理和创建逻辑,你不必关心如何实现。
手动修改数据库可能会造成数据丢失,因为你代码定义了数据结构。
数据库优先
较为被DBA接受,可以单独开发,或者根据数据库自动生成。可以让EF自动创建实体,或者你自行修改映射关系后EF会生成代码。
如果你希望附加一个功能在POCO实体中,你必须修改T4模板或者定义局部类(partial class)
可以手动修改数据库,应为数据库定义了你的域模型。你可以随时根据数据库更新模型(亮点)。
模型优先
以我看来,如果你懒得写代码或者SQL,使用拖拉(设计器)来完成你的模型,让工作流去生成你的数据库脚本和T4模板生成你的POCO实体。但是你会失去部分控制实体和数据库的功能,不过对于小儿科项目来说是一个产能很高的做法。
如果你希望附加功能在POCO实体中,你要么修改T4模板或者使用局部类。
手动更改数据库将有可能丢失数据,因为你的模型定义了数据库。如果你有数据库生成包的插件,这会更好一些。它会允许你更新数据库模式(不用重建)或者在VS中更新数据库项目
来自:http://*.com/questions/5446316/code-first-vs-model-database-first