我想首先使用代码创建数据库。 我的数据库始终处于“DropCreateDatabaseAlways”模式。
我注意到,如果我不尝试对数据库执行某些查询,例如
using (var db = new Models.TnHContext())
{
var query = from u in db.Users
select u;
foreach (var u in query)
{
txt += u.UserID + "<br/>";
}
}
将不会创建数据库。除非我执行它,否则只能看到创建的数据库。想知道这是由于EntityFramework设计/默认行为吗?
答案 0 :(得分:0)
实体框架懒洋洋地触发数据库初始化。它只会在EF尝试连接到数据库时发生。您可以使用以下方法手动触发数据库初始化。
using (var db = new Models.TnHContext())
{
db.Database.Initialize(force: false);
}
将force参数设置为false会告诉EF如果已经触发了它,则不要运行初始化。
答案 1 :(得分:0)
当您针对上下文执行查询,从database initializer检索ObjectContext
或致电DbContext
时,会调用the Database.Initialize
method。
因此,如果要在不执行查询的情况下立即创建数据库,则应使用:
context.Database.Initialize(false);