我與外鍵有一對一的關係,但由於某種原因,Cascade Delete
未啓用。示例代碼如下。代碼第一個一對一啓用級聯刪除
public class AppRegistration
{
public int AppRegistrationId { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Username")]
public string UserName { get; set; }
[Required]
[StringLength(100)]
public string Password { get; set; }
[StringLength(20)]
public string StudentOrAgent { get; set; }
// navigation properties
public virtual AppStatus AppStatus { get; set; }
public virtual Agreement Agreement { get; set; }
public virtual AnotherTable AnotherTable { get; set; }
}
具有外鍵的從屬表如下。
public class Agreement
{
[Key]
[ForeignKey("AppRegistration")]
public int AppRegistrationId { get; set; }
public DateTime DateAgreed { get; set; }
public virtual AppRegistration AppRegistration { get; set; }
}
當我嘗試刪除生成的AppRegistrations
表中的條目,我得到一個參考約束衝突。
我試着把[Required]
放在依賴表中的導航屬性上,但它什麼也沒做--命令顯示了No pending code-based migrations.
消息。有任何想法嗎?謝謝。
更新: 我收到以下錯誤信息:
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.AppStatus_dbo.AppRegistrations_AppRegistrationId". The conflict occurred in database "MVCapp", table "dbo.AppStatus", column 'AppRegistrationId'.
感謝您的回答。我試着把'[Required]',但代碼遷移的'更新數據庫'返回'沒有待定的基於代碼的遷移。任何方式來解決這個問題? – erdinger 2013-05-10 16:29:19
我可能是錯的,但我認爲你不想嘗試第一種技術,因爲幾乎不可能滿足雙向所需的一對一關係。如果你嘗試插入協議,你會得到違反約束的原因,因爲AppRegistration不存在,反之亦然。 – AaronLS 2013-05-10 16:29:21
@ user2291748您是否在運行update-database之前添加了遷移? AaronLS,嗯,也許你是對的,這只是想到的東西。 – MattSull 2013-05-10 16:34:06