在运行时创建数据库

时间:2014-12-11 08:25:55

标签: c# entity-framework

直到现在我已经使用此代码动态创建数据库:

var db = new MyEntities(db_name);
if (!db.DatabaseExists()) 
{
    db.CreateDatabase();

其中MyEntities扩展了ObjectContext类。

在我的新应用程序中,我有相同的代码,但现在MyEntities扩展了DbContext类,并且DatabaseExists()和CreateDatabase()不可用。

我现在如何创建数据库?

1 个答案:

答案 0 :(得分:2)

因此,下面的代码将执行一个不同的stategy来创建数据库,我相信它会在DbContext被击中时运行。就像using (var context = new DbContext())

一样
Database.SetInitializer(new DropCreateDatabaseAlways<DbContext>());
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContext>());
Database.SetInitializer(new CreateDatabaseIfNotExists<DbContext>());

这些都是非常自我解释的。您甚至可以覆盖它们,以便添加种子数据。

将其放入Global.asax

如您所见,这些是强类型类。他们接受你继承的DbContext课程。

例如:

public class BlogContext : DbContext {}

Database.SetInitializer(new DropCreateDatabaseAlways<BlogContext>());

以上代码将丢弃并始终使用BlogContext作为参考创建数据库。