Как сбросить столбец Identity таблицы до нуля в SQL Server?
Редактировать:
Как мы можем сделать это с помощью LINQ to SQL?
Как сбросить столбец Identity таблицы до нуля в SQL Server?
Редактировать:
Как мы можем сделать это с помощью LINQ to SQL?
DBCC CHECKIDENT (MyTable, RESEED, NewValue)
Вы также можете сделать Truncate Table, но, конечно, это также удалит все строки из таблицы.
Для этого через L2S:
db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");
Или вы можете вызвать хранимую процедуру из L2S, чтобы сделать это
MyTable
произошла следующая ошибка Cannot find a table or object with the name "[????? ?????? ???]". Check the system catalog.
Как я могу ее решить?
- person Mohammad Dayyan; 20.12.2010
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)
Дополнительные сведения: http://msdn.microsoft.com/en-us/library/ms176057.aspx
context.ExecuteCommand
- person marc_s; 20.12.2010
Используйте команду 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( );