出自:http://kb.cnblogs.com/page/97003/
Entity framework :database-first,code-first, model-first 这三个有什么不同?
EF4.1有三种方式来进行数据操作及持久化。分别是:Database-First,Model-First,Code-first:

1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。
2.Model First 这种方式是先利用某些工具(如VS的EF设计器)设计出实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象,这种方式在前一篇文章已经简单说过了。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。
建议看看这几篇文章:
EF框架step by step(1)—Database-First
EF框架step by step(2)—Model-First
EF框架step by step(3)—Code-First
 
6. 修改Model后,自动更新数据表
  当我们修改了Model后,运行网站时,会报错,因为EF现在不能把更新后的Model和旧数据表对应起来。为了使数据库随着Model的更新而更新,我们还要做以下的工作。
  打开根目录下的Global.asax文件。
  添加如下命名空间(注意:EFCodeFirst 1.0 和 0.8 对于 DataBase 类所在的命名空间不同)
using System.Data.Entity;
using Blog.Models;
  新建一个BlogDBInitializer类,使他继承DropCreateDatabaseIfModelChanges<BlogDB>,重写Seed函数。
public class BlogDBInitializer 
    : DropCreateDatabaseIfModelChanges<BlogDB>
{
    protected override void Seed(BlogDB context)
    {
        base.Seed(context);
            
        var links = new List<FriendLink>
        {
            new FriendLink{
                Name="NinoFocus.com",
                URL=@"http://ninofocus.com",
                Description="NinoFocus的个人博客"
            },
            new FriendLink{
                Name="NinoFocus at CNBlogs",
                URL=@"http://www.cnblogs.com/nizhuguo",
                Description="NinoFocus在博客园的博客"
            }
        };
        links.ForEach(l => context.FriendLinks.Add(l));
        context.SaveChanges();
    }
}
  向Application_Start()中,添加如下代码:


database.setinitialize{new ..dbinitializer()}; 
..db 为数据类名称  


  每次重建数据库后,数据库中的数据都是被清空。而Seed()函数的作用就是向新的数据库中添加以下初始化数据。
  如上面的代码我添加了两个友情链接。