当我尝试通过我的应用程序将照片上传到 SQL 数据库时db.SaveChanges()
,我会抛出 DbUpdateException 。UploadReferencePhoto ActionResult
我首先将代码与每个类型的表继承一起使用。与场景相关的模型如下:
用户资料:
[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; }
}
参考图片:
[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 语句与 FOREIGN KEY 约束 \"FK_dbo.ReferencePhoto_dbo.Tenant_UserId\" 冲突。冲突发生在数据库 \"C:\USERS\HOME\DESKTOP\LETLORD\LETLORD\APP_DATA\LETLORD.MDF\",表 \ "dbo.Tenant\",列 'UserId'。\r\n语句已终止。"}
有人可以告诉我内部异常到底在说什么以及如何解决它吗?如果需要更多代码/信息,请告诉我。