簡體   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