为了确保删除所有子元素,我目前必须这样做:
ComponentType type = db.ComponentTypes.First(t => t.ID == Convert.ToInt32(button.CommandArgument));
db.RigActions.DeleteAllOnSubmit(type.Components.SelectMany(c => c.RigActions));
db.Components.DeleteAllOnSubmit(type.Components);
db.ComponentTypes.DeleteOnSubmit(type);
db.SubmitChanges();
出于可维护性的目的,这让我感到害怕,我(或其他开发人员)可能会忽略父项(或在本例中为父项的父项)元素被删除时所需的所有清理工作。
Linq是否具有我可以设置的任何类型的依赖项属性,以便在删除组件类型时删除所有组件记录,以及属于每个组件记录的所有操作?
答案 0 :(得分:0)
我不确定它可以在Linq中完成(它可能可以)。如果您在数据库中定义了CASCADE DELETE,那将会容易得多。这样,子记录将被自动删除,您不必担心忘记任何事情。
本文可能会为您提供更多信息
http://www.mssqltips.com/sqlservertip/2743/using-delete-cascade-option-for-foreign-keys/
本文是关于在EF
中设置级联删除答案 1 :(得分:0)