當我嘗試通過我的應用程序將照片上載到SQL數據庫時,DbUpdateException正在我UploadReferencePhoto ActionResult
中的db.SaveChanges()
處拋出。我先用代碼表繼承來使用代碼。對與場景模式如下:將圖像(字節數組)添加到數據庫時,DbUpdateException(插入語句與外鍵約束衝突)
用戶配置:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
// ...
}
租戶:
[Table("Tenant")]
public class Tenant : UserProfile
{
public Tenant()
{
this.ReferencePhotos = new List<ReferencePhoto>();
}
public virtual ICollection<ReferencePhoto> ReferencePhotos { get; set; }
}
圖片:
[Table("Image")]
public class Image
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ImageId { get; set; }
}
ReferencePhoto:
[Table("ReferencePhoto")]
public class ReferencePhoto : Image
{
// 1:many with Tenant
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual Tenant Tenant { get; set; }
}
所以Tenant
延伸UserProfile
和ReferencePhoto
延伸Image
。當我點擊上傳時會引發上述異常。內部異常如下:
「INSERT語句衝突與外鍵約束\」 FK_dbo.ReferencePhoto_dbo.Tenant_UserId \ 「該衝突發生於數據庫\」 C:\ USERS \首頁\桌面\ LETLORD \ LETLORD \ APP_DATA \ LETLORD.MDF \ 「表\ 」dbo.Tenant \「,列 '用戶ID'。\ r \ n該語句已終止。」}
有人能告訴我到底什麼內部異常是在說,並可能如何解決它?讓我知道是否需要更多的代碼/信息。
謝謝,通過設置FK'reference.UserId = tenantRepository.GetLoggedInTenant()。UserId;'解決了問題。出於某種原因,我不認爲我必須自己明確設置FK。 – MattSull 2013-03-26 13:40:25
我會爲你感到高興,但我是一名瓦肯人,無法表現出人類的情感。 – 2013-03-26 16:44:38