危険なライブが好きな人にとっては可能ですが、ID 列を再シードすることはお勧めできません。
TSQL は
dbcc checkident ([tableName], reseed, [previousHighestID])
次の表を考えます。
create table x ( a int identity(1,1), y varchar(max) )
エンティティ フレームワーク:
using (var context = new XContext())
{
context.Database.SqlCommand("insert into x select 'abc'");//id 1
context.Database.SqlCommand("insert into x select 'cba'");//id 2
context.Database.SqlCommand("delete from x where a = 2");//delete id 2
context.Database.SqlCommand("declare @identMax int; select @identMax = max(a) from x; dbcc checkident (x, reseed, @identMax)");
//reseed identity to 1 ( so next insert will be id 2 )
context.Database.SqlCommand("insert into x select 'def'");//id 2 (again!)
var X = context.X.SqlQuery("select * from x").ToList();
}
いくつかの欠損値については本当に心配する必要はありません。int または bigint 列は、多くの値を表すことができます。
ジャック・ハンディの深い考えを思い出しました:
「鍵を溶岩の中に落としたら放っておけばいいんだよ、鍵はなくなってしまったから」