【问题标题】:Delete all records from a database using LINQ to SQL使用 LINQ to SQL 从数据库中删除所有记录
【发布时间】:2012-11-07 01:02:33
【问题描述】:

我正在使用 MVC。如何使用 LINQ to SQL 从数据库中删除所有记录?一个代码示例将不胜感激。

【问题讨论】:

  • 你的意思是从一个表中删除所有行,还是从所有表中删除所有行?

标签: asp.net-mvc linq linq-to-sql


【解决方案1】:

如果要删除表中的所有记录,请执行以下操作:

context.Entities.DeleteAllOnSubmit(dc.Entities);

DeleteAllOnSubmit 需要一个可枚举的集合,虽然我没有尝试过,但它应该支持这个(因为 dc.Entities 是一个表),它应该删除所有实体。

您必须对所有表格执行此操作;您不能只发出一个命令来执行此操作。或者,您可以通过将 proc 添加到方法列表中来创建一个包含所有删除操作的过程并执行该过程。

另外,需要注意的是,如果您在数据库中有相当大的结果集,那么删除和重新创建数据库中的表比实际执行所有这些删除要快,仅供参考。

【讨论】:

    【解决方案2】:

    考虑到您指的是Linq to SQL,我认为仅使用一个命令行就无法完成您想要的操作(清除所有数据库实体)。

    您可以使用 SQL truncatedelete 命令删除每个实体,使用 DataContext.ExecuteCommand,如下所示:

    context.ExecuteCommand("DELETE FROM EntityName");
    

    或者

    context.ExecuteCommand("TRUNCATE TABLE EntityName");
    

    尽管如此,您仍然必须为每个实体执行此操作,并注意实体之间的关系(外键)。

    其他参考资料:

    【讨论】:

      【解决方案3】:

      您不能为此使用 linq,因为 linq 只是一种查询语言而不是数据操作语言。 请改用 dataadapter 或 createstatement 或 sql 来完成此任务。

      【讨论】:

      • 技术上是正确的,但从问题的上下文来看,OP 表示 Linq2SQL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多