【发布时间】:2017-09-22 18:44:39
【问题描述】:
我有一个表(代码优先,EF6,Sql Server):
public int Srl { get; set; }
public StringName{ get; set; }
public Nullable<int> Parent { get; set; }
我想删除表中带有特殊Srl 的行及其所有子项。请注意,一行的孩子可能是这样的:
row->
Child1->
Child1-1
Child2->
Child3->
Child3-1
Child3-2->
Child3-2-1
Child4
我写这个方法:
private void DeleteObjectAndChildren(int id)
{
var menu = db.Menus.Where(m => m.Parent == id).ToList();
foreach (var item in menu)
{
var child = db.Menus.Where(m => m.Parent == item.Srl).ToList();
if (child.Count != 0)
{
DeleteObjectAndChildren(item.Srl);
}
else
{
db.Menus.Remove(item);
}
}
db.SaveChanges();
}
代码运行没有错误,但数据库中没有任何变化。任何人都知道我的错吗?
任何人都可以建议更好的方法来删除一行及其所有子项吗?
【问题讨论】:
-
你能发布完整的实体模型吗?现在的方式(没有任何导航属性),我看不出你如何定义关系。
标签: c# sql-server entity-framework