簡體   English   中英

Entity Framework Core 使用現有模型和數據庫,從 .Net 4.8 升級

[英]Entity Framework Core using existing models and database , upgrading from .Net 4.8

我已經使用遷移助手將 .NET Framework 4.8 站點升級到 .NET 6.0,並進行了一系列手動更改來修復問題。 我發現使用 Add-Migration 不再起作用了。 遷移助手使用 Entity Framework 的 pre-Core 版本離開了項目。 我想我會嘗試升級到 Entity Framework Core 以使項目完全更新。

遷移文件甚至不接近 Entity Framework Core 需要的東西,我突然想到我不關心遷移文件。 我不會刪除任何遷移,因此歷史不再相關。

現有實體和現有數據庫是否有可能從根本上重置 Entity Framework Core,以便允許我創建新的遷移? 如果它能夠構建一個能夠從頭開始構建數據庫的初始創建數據庫遷移可能會很好,但這並不是非常重要,因為這是一個完善的站點。 誠然,從頭開始構建對於開發和測試來說可能很方便,但目前不需要 - 如果需要,我可以稍后再做。

我可以先將其視為代碼,但刪除所有遷移並清除遷移表嗎? 它會識別出實體已經作為表存在於數據庫中,還是想要重新構建所有內容?

我可以先把它當作數據庫,讓它構建所有模型然后刪除這些模型並使用我自己的模型嗎? 我很想走那條路,似乎最不可能失敗。

我對此進行了相當多的搜索,但是當它涉及從 .NET Framework 遷移到 .NET Core 並且還涉及 Entity Framework 遷移時,我發現很難擺脫所有通用版本遷移搜索命中來找到我真正想要的東西。

我升級到 Identity Core 以致與身份相關的實體已經與數據庫不同步,是否會破壞任何計划?

以下是 Ivan 提供的鏈接中的相關位。

如果您嘗試保留現有數據,Microsoft 將此稱為壓縮遷移。 他們列出的步驟如下:

  1. 刪除您的遷移文件夾
  2. 創建一個新的遷移並為其生成一個 SQL 腳本
  3. 在您的數據庫中,從遷移歷史記錄表中刪除所有行
  4. 在遷移歷史記錄中插入一行,以記錄已經應用了第一個遷移,因為您的表已經存在。

我不得不修改上面的過程,因為它沒有考慮遷移歷史存儲的變化。 您可能需要將步驟 3 替換為:

  1. 從數據庫中刪除 __MigrationHistory

  2. 創建 __EFMigrationsHistory 為

    CREATE TABLE [dbo].[__EFMigrationsHistory] ​​([MigrationId] NVARCHAR (150) NOT NULL, [ProductVersion] NVARCHAR (32) NOT NULL, CONSTRAINT [PK___EFMigrationsHistory] ​​PRIMARY KEY CLUSTERED ([MigrationId] ASC) );

然后繼續執行原始列表中的步驟 4。 請注意,對於 __EFMigrationsHistory 中的 ProductVersion 字段,您可以在創建遷移后查看初始遷移的 Designer.cs 文件或 ApplicationDbContextModelSnapshot.cs。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM