gpt4 book ai didi

c# - EF6 尝试在运行时创建表,但没有挂起的更改

转载 作者:行者123 更新时间:2023-11-30 16:50:32 24 4
gpt4 key购买 nike

我正在为我的 ASP.NET 项目使用 Entity Framework 6.1.3 代码优先迁移。我已禁用自动迁移。我运行了 Add-MigrationUpdate-Database 命令,EF 在 __MigrationHistory 之间找不到任何未决的更改>数据库上下文。但是,当我启动应用程序时,它会尝试从上下文创建表,前提是它们已经存在于 __MigrationHistory 表的最新条目中。 (为了确定,我检查了迁移表中的 EDMX XML 文件)。你有什么想法,我如何解决这个问题而不丢失任何数据? tes test test

最佳答案

如果您不希望您的应用程序总是在运行时重新创建表,您必须更改数据库初始化程序。在您的 DBContext 类中,您应该看到这样的代码(假设您的 DBContext 称为 MyDbContext):

static MyDbContext()
{
// You should see this...
Database.SetInitializer(new DropCreateDatabaseAlways<MyDbContext>());
// ... or this ...
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDbContext>());
}

第一个初始化器总是会重新创建你的数据库,而第二个初始化器只会在模型发生变化时重新创建你的数据库。如果未指定初始值设定项,则默认值为 CreateDatabaseIfNotExists,顾名思义,如果数据库尚不存在,它将创建该数据库。您也可以在配置文件中设置初始化程序。参见 this resource获取更多示例和信息。

关于c# - EF6 尝试在运行时创建表,但没有挂起的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951173/

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