直到现在我已经使用此代码动态创建数据库:
var db = new MyEntities(db_name);
if (!db.DatabaseExists())
{
db.CreateDatabase();
其中MyEntities扩展了ObjectContext类。
在我的新应用程序中,我有相同的代码,但现在MyEntities扩展了DbContext类,并且DatabaseExists()和CreateDatabase()不可用。
我现在如何创建数据库?
答案 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
作为参考创建数据库。