繁体   English   中英

如何在 EF Core 的 OnModelCreating 中运行 SQL 脚本?

[英]How can I run SQL script in OnModelCreating by EF Core?

我的程序有一个现有的 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'");
}

代码运行后报这个错误:

在创建 model 时尝试使用它。 不能以任何利用正在创建的 model 的方式在“OnModelCreating”内部使用 DbContext 实例

我该如何解决这个问题? 谢谢你。

您应该使用迁移在数据库中添加列。 如果您想在启动时应用迁移,您可以检查是否需要迁移数据库并使用类似这样的方式应用迁移

if (_context.Database.GetPendingMigrations().Any()) {
    await _context.Database.MigrateAsync();
}

尝试为您的架构使用不同的上下文,错误消息很清楚,您可以使用正在创建的 model。 只需为您的架构创建另一个上下文。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM