Сбросить нулевой столбец идентичности в SQL Server? - PullRequest
15 голосов
/ 19 декабря 2010

Как я могу сбросить столбец Identity таблицы в ноль в SQL Server?

Edit:

Как мы можем сделать это с LINQ to SQL?

Ответы [ 6 ]

24 голосов
/ 19 декабря 2010
DBCC CHECKIDENT (MyTable, RESEED, NewValue)

Вы также можете создать таблицу усечений, но, конечно, это также удалит все строки из таблицы.

Для этого через L2S:

db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");

Или вы можете вызвать хранимую процедуру из L2S, чтобы сделать это

9 голосов
/ 19 декабря 2010
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)

Дополнительная информация: http://msdn.microsoft.com/en-us/library/ms176057.aspx

6 голосов
/ 19 декабря 2010

Используйте команду LINQ to SQL ExecuteCommand для запуска требуемого SQL.

db.ExecuteCommand("DBCC CHECKIDENT('table', RESEED, 0);");

LINQ - это язык запросов, не зависящий от источника данных, и не имеет встроенных средств для такого рода функций, специфичных для источника данных.LINQ to SQL также не предоставляет специальной функции для этого. AFAIK.

3 голосов
/ 02 октября 2012

Общий метод расширения:

    /// <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);

2 голосов
/ 20 декабря 2010

используйте этот код

DBCC CHECKIDENT(‘tableName’, RESEED, 0)
0 голосов
/ 22 апреля 2014

Для выполнения той же задачи в таблице SQL Compact используйте:

db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";   
db.ExecuteNonQuery(  );
...