gpt4 book ai didi

c# - MigrateDatabaseToLatestVersion 初始值设定项无法创建数据库

转载 作者:太空狗 更新时间:2023-10-29 20:13:53 26 4
gpt4 key购买 nike

如果数据库不存在,我正在尝试使用 EF 代码优先迁移来构建数据库。到目前为止,我已成功Enabled-Migrations。我还使用 Add-Migrations 进行了构建数据库的初始迁移。该脚本在迁移方向,看起来是正确的。

这是我的主要方法的主体

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 应该创建最新迁移的数据库......我错过了什么?

最佳答案

实例化 DbContext 不会执行绑定(bind)到它的初始化程序。相反,您需要更新数据库或直接在底层数据库上调用初始化程序。

MyDbContext.MyEntity.Add(new MyEntity { Name = "Nelson" });
// Or
MyDb.Context.Database.Initialize(true); // force the initialization

关于c# - MigrateDatabaseToLatestVersion 初始值设定项无法创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com