1

当我尝试通过我的应用程序将照片上传到 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延伸UserProfileReferencePhoto延伸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语句已终止。"}

有人可以告诉我内部异常到底在说什么以及如何解决它吗?如果需要更多代码/信息,请告诉我。

4

1 回答 1

1

试试看这里:

INSERT 语句与 FOREIGN KEY 约束冲突

“FK 的工作方式是它不能在该列中具有不在引用表的主键列中的值。”

如果您使用 FK 将记录添加到表中,则需要确保包含主键的记录也在那里。

于 2013-03-26T12:40:07.500 回答