使用Entity Framework删除多个表中的所有记录

时间:2012-06-21 08:18:01

标签: c# entity-framework stored-procedures

我正在使用Entity Framework,C#4.0和Visual Studio 2010.我需要执行一个简单的SQL查询来删除四个表的内容。该查询包含:

DELETE FROM dbo.tblMFile
DELETE FROM dbo.tblMContacts
DELETE FROM dbo.tblPersonDetails
DELETE FROM dbo.tblAddresses

某些表之间存在外键约束。

似乎没有简单的方法可以做到这一点。

参考我对第一个答复者答案的评论:

  • 由于数据的高度机密性,我需要一种快速删除所有内容的方法(要求和安全问题)

  • 我是EF新手,热衷于学习

  • 由于上面提到的外键约束,我使用的是delete而不是truncate(上面的SQL也是说明性的,不是确定的。)

  • 我坚定而且长时间相信强类型,并且我的所有对象前缀都带有类型指示器。它节省了我几小时(或几天甚至)的调试时间。

  • 人类有礼貌,敏感和信息(在许多其他属性中)。我渴望成为人类。

3 个答案:

答案 0 :(得分:3)

不,这很好。 ORM不适用于批量删除。如果您真的想使用LINQ发出DELETE,请使用BlToolkit,它允许您在LINQ中表达任意非常标准的DML非批量(无截断)。

删除所有记录?

TRUNCATE TABLE,NOT DELETE。

TRUNCATE TABLE tblMFile

根据表格所包含的内容,可以快几千倍。主要是因为它也没有记录删除的数据 - 只是发生截断的事实。

答案 1 :(得分:2)

添加@TomTom的答案。您不能使用Entity Framework直接执行此操作。但你可以:

  • 创建一个存储过程来删除记录(它也可以将表名作为参数)
  • 使用ExecuteStoreQuery see see并直接编写SQL命令

答案 2 :(得分:0)

试试这个

_db.ExecuteStoreCommand("delete from MachineMaster where IdMachine =" + obj_Machine.IdMachine + "  or IdMasterMachine=" + obj_Machine.IdMachine  );