2016-12-31 29 views
0

所有工作都正常,直到我在表格中添加了一個新列。我找不到如何更新模型類,所以我自己在模型中添加了列。但是現在,當我運行我的應用程序時,出現錯誤:「未將對象引用設置爲對象的實例。」向表格添加一列後出現DbContext錯誤(ASP.NET/EF Core)

調試過程中,我發現,它與我的創作中的DbContext實例的問題:

MyDbContext context = new MyDbContext(db); 

上下文對象不是取出由表中的行,並給這個對象引用錯誤。

如果我從Model類中刪除新列,那麼它工作正常。這表明我的數據庫和模型不同步,看起來應用程序正在使用舊的表格設計。

我也嘗試使用CLI命令來更新數據庫,但在面臨困難也是如此。

有人能想出如何使模型類和表設計同步,一旦添加了表列?我正在使用ASP.NET Core和EF Core。

謝謝。

+0

您應該只腳手架一次,然後一直使用代碼優先的方法(變化模型和運行代碼遷移+ DB更新),從來沒有自己更改列在DB – Tseng

+0

難道說,我現在刪除列,然後加入我的模型類,然後運行遷移?如何運行遷移+數據庫更新呢?請告訴我。 – user6542823

+0

我試圖使用命令:DOTNET EF數據庫更新-c MyDbContext但它給我的錯誤「值不能爲空參數名:的connectionString」 – user6542823

回答

0

我能解決這個問題。我添加到類文件的屬性是int,表中的列也是int。但是我沒有在類文件中提到int是一個可以爲空的屬性? 。表中的值全爲空,並且由於該屬性不是可爲空的屬性,所以導致了該問題。

因此,我們可以繼續前進,添加在表的新列,並在類文件相匹配的屬性。這不是問題。只需要確保數據類型(可爲空)匹配。

0

把try catch找到確切的問題。

此問題,因爲在代碼級數據庫的模式,改變模式之間的差異的發生。你需要添加這一行。

Database.SetInitializer<yourDbName>(new DropCreateDatabaseIfModelChanges<yourDbName>()); 

它會同步您的數據庫。

相關問題