0

這應該很簡單。實體框架數據庫更新:外鍵引用無效列(導航屬性)

我有客戶和項目:

public class Client 
{ 
    public int ClientID { get; set; } 
    public string ClientName { get; set; } 
    public virtual ICollection<Project> Projects { get; set; } 
} 

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 
} 

所有這一切工作正常。在我的項目表中,我有一個字段:Client_ClientID存儲關係。

現在,我想補充的項目的導航性能,到客戶端:

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 

    // navigation properties 
    public virtual Client Client { get; set; } 
} 

當我運行更新的數據庫,我得到的錯誤:

Foreign key 'FK_dbo.Projects_dbo.Clients_Client_ClientID' references invalid column 'Client_ClientID' in referencing table 'Projects' 

的詳細SQL被顯示爲:

EXECUTE sp_rename @objname = N'dbo.Projects.Client_ClientID', @newname = N'Client_ClientID1', @objtype = N'COLUMN' 
ALTER TABLE [dbo].[Projects] ADD CONSTRAINT [FK_dbo.Projects_dbo.Clients_Client_ClientID] FOREIGN KEY ([Client_ClientID]) REFERENCES [dbo].[Clients] ([ClientID]) 

我不知道爲什麼它會嘗試將Client_ClientID重命名爲Client_ClientID1,然後再添加cons在它上面運行 - 看起來很奇怪?

我得到什麼錯誤?

回答

0

ForeignKeyAttribute添加到Project類中。

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 

    [ForeignKey("Client")] 
    public int ClientID { get; set; } 
    public virtual Client Client { get; set; } 
} 
+0

謝謝。因爲我沒有從那開始,所以它使用名稱「Client_ClientID」作爲FK字段。我必須刪除我的表並刪除__MigrationHistory,然後運行Update-Database -Force以使其重新創建上述架構。似乎現在工作,再加上它自動級聯刪除(我可以刪除我的手動應用程序)。完善! – Sean 2013-03-24 06:45:06