none
请教entity framework 删除一对多关联对象 RRS feed

  • 问题

  • 实体定义如下:

    Dirs

    Files

    其中Files中包含外键列DirID指向Dirs的主键DirID

    需求:删除一条Dir记录,同时删除该Dir所对应的所有Files

     

    代码:

    using(MyEntities et = new MyEntities()){
        var dir=(此处省略);
        dir.Files.Clear();
        et.Dirs.DeleteObject(dir);
        et.SaveChanges();
    }

    当运行到SaveChanges()的时候,会报一个异常:

    "其他信息: 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。"

    请教解决办法,谢谢


    • 已编辑 rewalax 2011年10月20日 2:08
    2011年10月20日 2:07

答案

  • 首先你应该把这2个表的外键关系设成 cascade delete. 取出一笑Dirs,你需要做的就是直接delete这个object from Context---->savechanges(). 不需要files.clear()

     


    Alan Chen[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 rewalax 2011年10月21日 13:52
    2011年10月20日 7:54
    版主