我在兩個表之間有一對多的關係(一個用戶可以有多個專輯),專輯表也和其他表有關係。 問題是,當我想保存一個專輯時,FOREIGN KEY約束將發生異常,但用戶存在並指定了外鍵。FOREIGN KEY約束例外
這裏的例外:
INSERT語句衝突與外鍵約束 「FK_Albums_CreatedBy」。
數據庫「{數據庫名稱}」,表「dbo.Users」,列'Id'中發生衝突。
該聲明已被終止。
這是專輯的映射代碼和用戶在專輯類的構造函數:
this.HasRequired(t => t.CreatedBy)
.WithMany(t => t.Albums)
.HasForeignKey(d => d.CreatedById);
這是節省代碼:
private void InsertAlbum(MyContext context, Album album)
{
album.Guid = Guid.NewGuid();
album.CreatedDateTime = DateTime.Now;
album.CreatedBy = context.Users.Single(u => u.UserName == "SomeUser"); // User exists and has Id = 1
album.RowVersion = Guid.NewGuid();
// Assigning other relations...
context.Albums.Add(album);
context.SaveChanges(); // This is the place that the exception occurs.
}
UPDATE
我發現錯誤是acctualy錯誤,因爲白蛋白ums表與Metadatas表有着另一種一對多關係,如果我沒有在專輯中插入任何元數據,我將不會收到任何異常。 現在我不確定什麼會導致錯誤,爲什麼它會顯示錯誤。
你能張貼代碼爲實體和配置類? –
我會啓動數據庫上的一個分析器來查看哪些SQL語句實際上正在執行。 –
你建議使用哪種分析器? – mrtaikandi