初始化数据库
创建数据库
在程序启动初,创建数据库。
不存在数据库才创建
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
using (MyContext mcx = new MyContext())
{
mcx.Database.CreateIfNotExists();
}
如果Mysql已经存在与MyContext对应的数据库名称相同的数据库,则不创建数据库。否则,创建。
当我们修改了Model,启动程序后,数据库不会跟着自动更新。如果我们尝试增删查改数据库,Entity Framework会出错。我们只能删除数据库,再次启动程序,才会删除旧数据库重新生成与Model一致的数据库,显然,这种方式会导致原有的生产数据丢失。
我们可以在修改Model后,自己手动去修改数据库的表结构,保持其与修改后的Model一致,这样数据库中原有的数据就不会丢失了。
每次启动程序都新建
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
using (MyContext mcx = new MyContext())
{
mcx.Database.Initialize(true);
}
每次重启程序,都会删除已存在的数据库,然后新建一个数据库。
Model更新自动新建
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
using (MyContext mcx = new MyContext())
{
mcx.Database.Initialize(true);
}
如果我们修改了Model,启动程序时会检查我们的Model是否发生了变化,如果变化了,便会删除现在的数据库,然后新建一个与当前Model一致的数据库。
注意:每次修改Model,都会导致原有的数据库数据被删除。
我们可以在修改Model后,自己手动去修改数据库的表结构,保持其与修改后的Model一致,这样数据库中原有的数据就不会丢失了。