LINQ到SQL类中的级联删除/更新

LINQ到SQL类中的级联删除/更新,sql,database,linq-to-sql,stored-procedures,Sql,Database,Linq To Sql,Stored Procedures,我不是永久删除记录(只是维护标志),但我想知道级联删除/更新在LINQ到SQL类中是如何工作的 编辑 如果我遇到类似情况,例如为删除选项保留标记。如何实现数据库的级联删除 你有两条路,我知道 a) u应该在数据层中定义约束( 如果存在FK约束(在级联时删除或在级联时更新) b) 使用CTE编写存储过程、函数或触发器,并在应用程序层中使用 在应用层中控制并编写您的函数 但我的建议是在数据层上实现 数据库级删除并不是一个完美的解决方案,在这种情况下,DataContext对对象已被删除的事实一无所知

我不是永久删除记录(只是维护标志),但我想知道级联删除/更新在LINQ到SQL类中是如何工作的

编辑


如果我遇到类似情况,例如为删除选项保留标记。如何实现数据库的级联删除

你有两条路,我知道

  • a) u应该在数据层中定义约束( 如果存在FK约束(在级联时删除或在级联时更新) b) 使用CTE编写存储过程、函数或触发器,并在应用程序层中使用
  • 在应用层中控制并编写您的函数 但我的建议是在数据层上实现

  • 数据库级删除并不是一个完美的解决方案,在这种情况下,DataContext对对象已被删除的事实一无所知。
    更好的方法是使用关联标志(如[association(…DeleteRule=“cascade”…])在应用程序级别处理这种情况。

    根据您的第一个选项,我应该使用CTE触发一个存储过程,但我有许多表具有一个表的F.K.(外键)。那么我怎么知道这许多表都有主表中的F.K。将来,如果我用F.k.添加新表,或者用F.k.删除一个表,那么我必须检查所有的S.P.(存储过程),然后重写所有逻辑。这是一项艰巨的任务。如果我的想法是错误的,请告诉我。如果您认为这需要很多时间,那么您可以编写存储过程创建者(这对其他项目非常有用)或使用CodeSmith