1

我正在使用 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 新手,渴望学习

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

  • 我一直坚信强类型,并在我的所有对象前加上类型指示符。它为我节省了数小时(甚至数天)的调试时间。

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

4

3 回答 3

3

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

删除所有记录?

截断表,而不是删除。

截断表 tblMFile

根据表格包含的数量,速度可能会快数千倍。主要是因为它也不会记录已删除的数据 - 只是发生截断的事实。

于 2012-06-21T08:21:30.297 回答
2

添加到@TomTom的答案。你不能直接使用实体框架来做到这一点。但是你可以:

  • 创建一个存储过程来删除记录(也可以将表名作为参数)
  • 使用ExecuteStoreQuery see see直接写SQL命令
于 2012-06-21T11:26:03.167 回答
0

尝试这个

_db.ExecuteStoreCommand("delete from MachineMaster where IdMachine =" + obj_Machine.IdMachine + "  or IdMasterMachine=" + obj_Machine.IdMachine  );
于 2018-05-18T09:30:02.300 回答