app.config
中读取的默认连接字符串创建上下文时,数据库被创建并且迁移工作正常——基本上一切都是正确的。然而,当程序化地创建连接字符串(使用SqlConnectionStringBuilder
)时:
- 如果不存在数据库(场景
A
),则不会创建数据库; CreateDbIfNotExists()
会创建数据库模型的最新版本,但迁移机制未被调用(场景B
)。
A
中,当我希望访问数据库时,会抛出异常,因为很明显数据库不存在。在情况B
中,数据库被正确创建,但迁移机制没有被调用,就像标准连接字符串的情况一样。
app.config:
"Data Source=localhost\\SQLEXPRESS;Initial Catalog=Db13;User ID=xxx;Password=xxx
"
builder:sqlBuilder.DataSource = x.DbHost;
sqlBuilder.InitialCatalog = x.DbName;
sqlBuilder.UserID = x.DbUser;
sqlBuilder.Password = x.DbPassword;
初始化器:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<
MyContext,
Migrations.Configuration
>()
);
规格: 实体框架(Entity Framework):5.0,数据库(DB):SQL Server Express 2008