在我的代碼優先此應用程序中,我已將外鍵定義爲可空。然而,當我嘗試添加一條記錄沒有那把鑰匙,我仍然得到一個外鍵約束錯誤:如何讓此代碼優先關係不是必需的
The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_dbo.RequestReview_dbo.CustomForm_ReviewFormId\". The conflict occurred in database \"Mkp\", table \"dbo.CustomForm\", column 'CustomFormId'.\r\nThe statement has been terminated.
我應該如何界定,使得鍵約束不強制關係?
我的代碼第一個模型定義這樣的領域:
[Key, ForeignKey("Resource"), DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid RequestReviewId { get; set; } // My Primary Key
public virtual Resource Resource { get; set; }
public Guid? ReviewFormId { get; set; } // Foreign Key
[ForeignKey("ReviewFormId")]
public CustomForm ReviewForm { get; set; }
(我也嘗試搜索,但我不知道我搜索用正確的術語。)
編輯/更新:
如果我刪除ForeignKey標記,我仍然嘗試創建關係的遷移,但此時稱爲ReviewForm_CustomFormId
。我怎樣才能避免這種情況?
更新了模型的版本:
[Key, ForeignKey("Resource"), DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid RequestReviewId { get; set; } // My Primary Key
public virtual Resource Resource { get; set; }
public Guid? ReviewFormId { get; set; } // Foreign Key
public CustomForm ReviewForm { get; set; }
我一直希望有更好的辦法。另外,如果我放棄ForeignKey屬性,遷移需要創建一個新的列'ReviewForm_CustomFormId',它具有相同的外鍵完整性。 –
要明確,你可以有可空的外鍵。這是問題的GUID。 http://stackoverflow.com/questions/26000345/allow-null-foreign-key-guid –
@SteveGreene你的實力,當然你可以有可空的外鍵,但這真的不符合使用實體框架,我'我已經經歷了這個問題百次,如果你找到了更好的方法來使GUID工作,請把鏈接放在這裏! –