2014-11-23 33 views
0

有沒有任何方法可以自動生成主鍵(int數據類型)而不使用標識屬性?我正在使用SQL Server 2008 R2 SP2 Express Edition和實體框架4(集成在Visual Studio 2010中)。在沒有標識列的EF4中自動生成私鑰

+1

**這樣做的最好,最簡單和最可靠的方法***是使用'IDENTITY'列的IS ***,因爲數據庫處理所有內容,並且保證了併發安全。你爲什麼從開始就排除這個完美的選擇? – 2014-11-23 08:37:54

+0

因爲我在做IDENTITY列的實驗,所以對結果不滿意。我設置tinyint IDENTITY列並添加了255行,之後,即使刪除了表中的所有行,溢出異常也不斷拋出。這意味着數據庫引擎不會檢查哪些值可以自由使用,而只能檢查最後使用的值。設想1 000 000行添加,刪除並再次添加 - 現在你有2 000 000個不可用的數字。我找到的最佳解決方案是將int索引更改爲GUID索引,並使用計算列在客戶端或服務器上生成唯一索引(我現在還不知道如何)。 – 2014-11-23 11:06:27

+0

是的,這就是'IDENTITY'的工作方式 - 一旦發佈了一個值,它就從未被**回收!只需使用更適當的數據類型 - 像'INT',它給你潛在的4 **億** **可能的值..... – 2014-11-23 16:16:23

回答

0

這樣做的最好,最簡單和最可靠的方法是使用IDENTITY列,因爲數據庫會爲您處理所有事情,並且保證它是併發安全的。