初始化数据库

创建数据库

在程序启动初,创建数据库。

不存在数据库才创建

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一致,这样数据库中原有的数据就不会丢失了。

上一篇:Xamarin.Forms 复制本地SQLite数据库


下一篇:报错:Error querying database. Cause: java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘