操作失败:无法从数据库中删除实体

时间:2013-08-19 12:51:23

标签: entity-framework foreign-key-relationship

我有这些方法类:

public class Links
{
    [Key]
    public int LID { get; set; }
    public string Link { get; set; }
    public string Type { get; set; }
    public string Filename { get; set; }
    public virtual int RessourceId { get; set; }
}

public class Ressource
{
    [Key]
    public int RessourceId { get; set; }
    public string TitreR { get; set; }
    public string Desc { get; set; }
    //public int Position { get; set; }
    public int Rating { get; set; }
    public string Tags { get; set; }
    public virtual int SectionId { get; set; }
    public virtual int UserId { get; set; }
    public virtual ICollection<Links> Links { get; set; }

}

public class Section
{
    [Key]
    public int SectionId { get; set; }
    public string Titre { get; set; }
    public virtual ICollection<Tags> Tags { get; set; }

    public virtual ICollection<Ressource> Ressources { get; set; }
    //public Section() { this.Tag=new List<string>(); }
}

当我想删除Ressource时,我有这个错误:

  

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

错误行:

_db.Entry(R).State = EntityState.Deleted;
_db.SaveChanges();    // error line

PS:在我将Linksname属性添加到Links类之前,它正在工作......任何想法如何解决?谢谢

1 个答案:

答案 0 :(得分:0)

使外键可以为空(即将其类型从int更改为int?):

public virtual int? RessourceId { get; set; }

这意味着您可以拥有没有资源的链接。