![](/img/trans.png)
[英]Can I get a primary key to auto-increment in Entity Framework, while having other key
[英]How can I re-assign an auto-increment primary key value?
是否可以設置自動增量字段的值? 如果使用主鍵5刪除記錄,但當前的自動增量計數為10,是否有任何方法可以重新插入該記錄,其主鍵仍保持為5(而不是11)? 我試圖用C#中的Entity Framework 4.1來做這件事。
我想你也可以用
Set Identity_Insert TableName ON
Update your Id value
Set Identity_Insert TableName OFF
引自Tom Haigh的話 :
您可以刪除主鍵列並重新創建它。 然后將重新分配所有ID,我假設按行插入的順序。
但是,我不確定你為什么要這樣做,特別是如果你有其他表持有該表的外鍵。 如果是這樣,您還需要更新這些字段,在這種情況下,刪除和重新創建列將不是一個好的解決方案。 您可以改為重命名該列,刪除autoinc / primary key屬性,然后創建一個新的autoinc主鍵列。 然后,您將擁有可用於更新此類外鍵的舊ID和新ID。
您可以禁用身份規范 。 您的主鍵將保持不變,但您可以插入具有您選擇的ID的新記錄。 插入記錄后,您需要重新啟用身份規范。
雖然這里提出了一些很好的建議,但在處理這個問題的解決方案時我才意識到了一些事情。 數據庫是MySQL的披露可能會對此有所幫助,但我當時沒有意識到差異會如此之大。 事實上,在MySql中沒有鎖定插入自動增量主鍵。 因此,此代碼用於插入主鍵小於自動增量索引的當前值的記錄:
var sql = @"INSERT INTO Work (
WorkId ,
LotId ,
Description ,
)
VALUES (
'5', '5', 'This Works'
);";
using (var db = new Context())
{
db.Database.ExecuteSqlCommand(sql);
}
正確插入索引為5的記錄,即使當前的自動增量計數為11。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.