0

我在我的项目中使用 ORM telerik 开放访问。我可以使用它来创建数据并将其添加到我的数据库中。

现在我想从我的数据库中清除所有数据。我可以通过从每个表中删除数据来做到这一点,但这需要很长的代码。我有谷歌如何使用 DBContext 清理它,但一无所获。还有另一种清理数据库但不循环调用数据库中每个表的删除函数的方法吗?

4

2 回答 2

1

(仅限 SQL SERVER)您可以使用以下 sql 脚本清理数据库中的数据:

/* 1. 禁用所有约束和触发器*/ exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' exec sp_MSforeachtable 'ALTER TABLE ? 禁用全部触发'

/* 2. 删除所有表数据 */ exec sp_MSforeachtable 'DELETE ?'

/* 3. 启用所有约束和触发器 */ exec sp_MSforeachtable 'ALTER TABLE ? 检查约束所有' exec sp_MSforeachtable 'ALTER TABLE ? 启用全部触发

/* 4. 重置表标识 */ exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'

于 2013-09-12T06:38:10.430 回答
0
  1. 从数据库创建脚本以进行删除和创建。
  2. 使用您采用的代码创建相同的存储过程。
  3. 从后面的代码执行存储过程..

删除和创建查询将是这样的..这是一个示例..

/ *对象:表 [dbo].[EmployeeList] 脚本日期:09/12/2013 09:35:01* /

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EmployeeList]') AND type in (N'U'))
DROP TABLE [dbo].[EmployeeList]
GO

USE [dbname]
GO

/****** Object:  Table [dbo].[EmployeeList]    Script Date: 09/12/2013 09:35:01 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[EmployeeList](
    [FirstName] [nvarchar](50) NULL,
    [LastName] [nvarchar](50) NULL,
    [Category] [nvarchar](50) NOT NULL,
    [id] [int] IDENTITY(1,1) NOT NULL,
    [alphanumeric] [varchar](50) NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
于 2013-09-12T04:12:26.670 回答