如何在 SQL Server 中将表的标识列重置为零?
编辑:
我们如何使用 LINQ to SQL 来做到这一点?
如何在 SQL Server 中将表的标识列重置为零?
编辑:
我们如何使用 LINQ to SQL 来做到这一点?
DBCC CHECKIDENT (MyTable, RESEED, NewValue)
你也可以做一个截断表,但是,当然,这也会从表中删除所有行。
要通过 L2S 执行此操作:
db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");
或者,您可以从 L2S 调用存储过程来执行此操作
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)
使用 LINQ to SQL ExecuteCommand 运行所需的 SQL。
db.ExecuteCommand("DBCC CHECKIDENT('table', RESEED, 0);");
LINQ 是一种与数据源无关的查询语言,没有用于这种数据源特定功能的内置工具。LINQ to SQL 也不提供执行此操作的特定函数。
通用扩展方法:
/// <summary>
/// Reseeds a table's identity auto increment to a specified value
/// </summary>
/// <typeparam name="TEntity">The row type</typeparam>
/// <typeparam name="TIdentity">The type of the identity column</typeparam>
/// <param name="table">The table to reseed</param>
/// <param name="seed">The new seed value</param>
public static void ReseedIdentity<TEntity, TIdentity>(this Table<TEntity> table, TIdentity seed)
where TEntity : class
{
var rowType = table.GetType().GetGenericArguments()[0];
var sqlCommand = string.Format(
"dbcc checkident ('{0}', reseed, {1})",
table.Context.Mapping.GetTable(rowType).TableName,
seed);
table.Context.ExecuteCommand(sqlCommand);
}
用法:myContext.myTable.ReseedIdentity(0);
使用此代码
DBCC CHECKIDENT(‘tableName’, RESEED, 0)
要在 SQL Compact 表中完成相同的任务,请使用:
db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";
db.ExecuteNonQuery( );