从多个表中删除(linq到sql)

o-l*_*ogn 6 performance sql-server-2005 linq-to-sql delete-row

我正在使用Linq to SQL来访问我的数据库.我希望有一个"删除帐户"功能,它基本上摆脱了属于给定用户的所有表中的所有记录.这样做最有效的方法是什么?

删除必须按特定顺序进行,否则会出现外键完整性错误.我可以从数据库手动执行此操作,我的猜测是在L2S中简单地模拟它,例如(伪代码)

var tb1del = From Table1 Where userId == userIdToDelete;
mydatacontext.Table1.deleteonsubmit(tb1del);

var tb1de2 = From Table1 Where userId == userIdToDelete;
mydatacontext.Table2.deleteonsubmit(tb1de2);
...
Run Code Online (Sandbox Code Playgroud)

但是,我确信这不是删除记录的最有效方法.

Aar*_*ght 6

最简单的解决方案就是在数据库中创建FOREIGN KEY约束ON DELETE CASCADE.这样您就不必担心删除顺序或其他任何问题.只需删除帐户记录即可.