ef开发模式有3种:DateBase First(数据库优先)、Model First(模型优先)和Code First(代码优先)。这里我用的是code first 一个简单的例子:

public class BloggingContext : DbContext
{
public BloggingContext() : base("name=testConn")
{ }
public DbSet<Person> Blogs { get; set; }
public DbSet<DepartPerson> Posts { get; set; }
}
class Program
{
static void Main(string[] args)
{//模型改变重新创建数据库
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BloggingContext>());
using (var db = new BloggingContext())
{
Person blog = new Person()
{
Name = "zhangsan",
Age = "",
ID = Guid.NewGuid().ToString().Replace("-", "")
};
db.Blogs.Add(blog);
db.SaveChanges(); foreach (var item in db.Blogs)
{
Console.WriteLine("Name:" + item.Name);
}
} Console.Read();
}

简单介绍一下Database.SetInitializer方法

一:数据库不存在时重新创建数据库

Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testContext>());
 
二:每次启动应用程序时创建数据库
 
Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<testContext>());

三:模型更改时重新创建数据库

 
Database.SetInitializer<testContext>(new DropCreateDatabaseIfModelChanges<testContext>());

四:从不创建数据库

 
Database.SetInitializer<testContext>(null);

这对这几种方式,可以通过代码做出改动,然后调试一下观察一下数据库的变化,会理解的更透彻!

05-11 04:29