SQL Server でテーブルの ID 列をゼロにリセットするにはどうすればよいですか?
編集:
LINQ to SQL でそれを行うにはどうすればよいでしょうか?
SQL Server でテーブルの ID 列をゼロにリセットするにはどうすればよいですか?
編集:
LINQ to SQL でそれを行うにはどうすればよいでしょうか?
DBCC CHECKIDENT (MyTable, RESEED, NewValue)
Truncate Table を実行することもできますが、もちろん、テーブルからすべての行も削除されます。
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( );