0
當我生成遷移時,未能確定數據庫中沒有某個表(Reports),因此生成的遷移爲空。儘管如此,我已經掌握了所有代碼,使這一代人能夠順利運行。使用不存在的表添加遷移問題
此代碼是舊的,直到今天還沒有完成。此外,我找不到任何涉及上述表的遷移,但由於某種原因,它認爲該表已經存在於數據庫中。例如,如果我更改Mapping類中的表名,如下所示,它將使用RenameTable命令生成遷移。當然,更新數據庫命令將失敗。
this.ToTable("Report");
關於如何解決這個問題的任何想法?
用IF EXIST編寫SQL腳本,在您的遷移中使用SQL(「,,,」)刪除此表(如果您不關心數據的話),然後您可以再次添加此表 –
@KD既然該表不存在,我想這個腳本不會有任何影響?儘管如此,我試圖在生成的遷移中添加以下行: Sql(「IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME ='Reports')DROP Table Reports」); 然後我再次生成遷移,沒有任何影響,如預期的那樣。 我錯過了你說的話嗎? – rsy
EF正在使用__MigrationHistory表跟蹤預期的數據庫狀態。因此,讓我們暫時假設在之前的遷移中存在「報告」,並且由於某種原因,某人手動更改了遷移「上」和「下」代碼,因此它不會創建表。 EF現在仍然認爲該表根據其保存的遷移歷史記錄可用,並且爲了進一步的遷移,它將生成代碼來改變表格而不是創建表格。所提供的信息有點不清楚。 – grek40