日期:2014-05-20  浏览次数:20799 次

请教entity framework 删除一对多关联对象
实体定义如下:
 
Dirs
 
Files
 
其中Files中包含外键列DirID指向Dirs的主键DirID
 
需求:删除一条Dir记录,同时删除该Dir所对应的所有Files
 
 
 
代码: 
C# code

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

 

当运行到SaveChanges()的时候,会报一个异常:
 
"其他信息: 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。"
 
请教解决办法,谢谢


------解决方案--------------------
先查出 Dirs以及Dirs的子集,然后直接删除了Dirs就行,这样的它的子集会一并删除。