目的:
在一个事务中
删除child记录,并删除child对应的Parent记录
或
删除Parent记录,并删除对应的child记录
我现在的问题:
context.Remove(child);
context.Remove(Parent);
context.dbSaveChange();
会说外键不能删除这样提示。我监控数据库发现只有一个delete parent的SQL。这我就不明白了为什么我删除了2个信息,而EF只做了一个删除。
如果按正常的思维想:我先删child,再删parent,是没有问题的。
该怎么解决,这种一对多的删除。
相关测试:
1.没有任何关系的两个表A B
Remove(A);
Remove(B);
saveChange();
成功
2.有关系的Parent,Child。没有关系的C表
Remove(Parent);//Child已经清空
Remove(C);
saveChange();
成功
3.有关系的Parent,Child。没有关系的C表
Remove(Parent);//Child未清空
Remove(C);
saveChange();
失败。这个好理解,因为Remove(Parent);会破坏主外键约束。
4.有关系的Parent,Child。
Remove(Child);
Remove(Parent);
saveChange();
失败。这个就是我现在的情况了。
DbFirst还是 CodeFirst?
实体 child 和 parent 有外键关联么?