2012-08-22 69 views
1

我有一個具有Admin對象的Blog對象。我最初有這個設置錯誤,它創建我的列不正確。我手動刪除了「Admin_Id」外鍵字段和關係。現在,當我再次運行遷移時,它不會再添加外鍵和關係。實體框架代碼首先遷移手動刪除列導致遷移問題

我可以強制實體框架以某種方式再次更新數據庫嗎?

我的對象:

聯繫

public class Admin: WebPage, IWebPage 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public string About { get; set; } 
    public string Image { get; set; } 

    public List<Blog> Blogs { get; set; } 
} 

博客

public class Blog : WebPage, IWebPage 
{ 
    public string Title { get; set; } 
    public string Summary { get; set; } 
    public string ArticleBody { get; set; } 
    public string Author { get; set; } 
    public DateTime PostingDate { get; set; } 

    public virtual Admin Admin { get; set; } 
    public virtual BlogCategory BlogCategory { get; set; } 
    public virtual List<Comment> Comments { get; set; } 
} 
+0

爲什麼你手動刪除它們而不是使用遷移? –

+0

一個錯誤。我該如何解決它? –

+0

我找不出如何強制代碼第一次遷移來處理添加字段和外鍵,但是,當我手動添加字段和外鍵回來時,它再次正常工作。 我知道這是問題的答案,但它解決了問題。 –

回答

0

實體框架專賣店已在__MigrationHistory表被應用到數據庫的遷移。如果您刪除此表中表示特定遷移的行(MigrationId列包含遷移類的名稱),則在您下次執行update-database時,將遷移該遷移。

這就是說,這將導致整個遷移被重新應用,不只是發生在它的一部分失蹤的數據庫,包括所有表的創作,滴,等等等等,所以用它小心如果您之前沒有手動退出遷移所實施的更改,因爲如果數據庫對象已經存在,其中一些操作可能並且會導致錯誤。