代码之家  ›  专栏  ›  技术社区  ›  JMon

无法在EF4中删除

  •  2
  • JMon  · 技术社区  · 14 年前

    我试图用EF4从数据库中删除一个“atteeevent”,但出现以下错误:

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

    我的代码如下:

            public void UnRegisterCurrentUserForEvent(int eventId)
        {
            Attendee attendee = GetOrCreateAttendeeForCurrentUser();
            AttendeeEvent av = attendee.AttendeeEvents.SingleOrDefault(x => x.EventID == eventId);
    
            if(av != null)
            {
                attendee.AttendeeEvents.Remove(av);
            }
    
            this.ObjectContext.SaveChanges();
        }
    

    我试图在从.edmx中的属性中删除时更改结尾2,但是当我设置为cascade时,我得到一个错误:

    错误1错误132:无法指定操作,因为其重数为' '.不能在具有多重性的结尾指定操作'

    你们能帮我吗

    谢谢你的帮助和时间

    1 回复  |  直到 14 年前
        1
  •  2
  •   Ronald Wildenberg    14 年前

    您只移除 AttendeeEvent 从与会者活动集合中 Attendee . 所以假设你有一个与会者 A 和事件 AV 然后你移走 成人影片 . 数据库内部应该发生什么?你还没有真正移除 成人影片 . 你只是这么说的 应该不再与 成人影片 . 所以在您的数据库中, 成人影片 设置为空,这是数据库模型不允许的。

    解决方法很简单:将从与会者中删除事件的行替换为以下行:

    this.ObjectContext.AttendeeEvents.DeleteObject(av);