如果数据库不存在,我正在尝试使用 EF 代码优先迁移来构建数据库。到目前为止,我已经Enabled-Migrations
成功了。我还曾经Add-Migrations
进行过构建数据库的初始迁移。该脚本在迁移方向上,看起来是正确的。
这是我的 Main 方法的主体
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>());
var directConfigContext = new MyDbContext();
我读过的所有内容都表明这就是我所需要的。MyDbContext
在app.config
里面,看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MyDbContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=DbConfig;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
此外,如果我使用 EF 提供的 DbMigrator 类,则可以正确构建数据库(大概使用初始数据库迁移脚本)。
// This is how it actually works including creating the database if it doesn't exist.
var dbMigrator = new DbMigrator(new Configuration());
dbMigrator.Update();
据我了解,设置初始化程序MyDbContext
并随后实例化DbContext
应该创建数据库到最新迁移......我错过了什么?