【发布时间】:2022-08-21 16:01:54
【问题描述】:
我的程序有一个现有的 SQLite 数据库。
在新版本的程序中,它需要为一个特性添加一个列。
现在该程序由 .NET 6 (WPF) 和 EF Core 6 制作。
我必须检测新列是否存在并添加。
这是我在OnModelCreating 中的代码,用于检测该列是否存在:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
var Result = Database.ExecuteSqlRaw(\"SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\'BindDesign\' AND COLUMN_NAME=\'type\'\");
}
代码运行后报这个错误:
在创建模型时尝试使用它。不能以任何使用正在创建的模型的方式在 \'OnModelCreating\' 内使用 DbContext 实例
我该如何解决这个问题?谢谢你。
-
您应该使用标准迁移。
-
@AlexanderPetrov 感谢您回答我的问题。我读过一些关于迁移的文章。但是,迁移似乎每次都必须在命令行中输入一些代码,但在检测到列不存在时不会自动更新。
-
如果您的解决方案需要频繁更新数据库结构,我宁愿考虑重新设计数据库概念。
-
@Michalor 不,它不会经常更改,仅针对此版本。
-
看看这个问题:stackoverflow.com/questions/70633065/… 它有链接到其他可能有帮助的类似问题。