如果超过1个元素,则删除我的子实体失败

时间:2013-11-13 14:57:56

标签: entity-framework

我有一个Itinerary,可能包含0个,1个或更多个TransportInfos

public class Itinerary
{
    [Key]
    public int Id { get; set; }
    ...
    public virtual List<TransportInfo> TransportInfos { get; set; }
}

public class TransportInfo
{
    [Key]
    public int Id { get; set; }
    ...
    public virtual Itinerary Itinerary { get; set; }
}

然后我有以下功能删除一堆行程和相关的TransportInfos

    public void DeleteItineraries(IEnumerable<int> ids)
    {
        var itinerariesToDelete = Context.Itineraries.Where(it => ids.Contains(it.Id)).Include(b => b.TransportInfos).ToList();

        itinerariesToDelete.ForEach(it =>
        {
            it.TransportInfos.ForEach(ti => Context.TransportInfos.Remove(ti));
            Context.Itineraries.Remove(it);
        });
        Context.SaveChanges();
    }
  • 如果我的TransportInfo内只有1 Itinerary,则删除成功。

  • 如果我TransportInfo内有Itinerary个{{1}},我就会收到以下错误:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试进行以下更改:

  • 将ItineraryID添加到TransportInfo
  • 将列表更改为ICollection