2015-06-24 76 views
0

有沒有什麼辦法,使自動生成主鍵字符串類型,INTGUID自動生成的字符串主鍵

public class User 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] //??? 
    public string Id { get; set; } // string type 

    public string Name { get; set; } 
    public string Login { get; set; } 
} 

在下列問題的情況下,「爲什麼呢?」:事情是,在我目前的模型PK是登錄了,我想在不知不覺中單獨的登錄和主鍵,節省的PK那是已經在使用。

+0

登錄 - 是一個用戶名嗎?我預測有一天有人會說「我們不喜歡自動生成的登錄信息,我們可以創建自己的登錄信息嗎?」或者「我們可以使用電子郵件地址登錄嗎?」那麼你將不得不修復所有這些外鍵...... – Colin

+0

沒錯。目前登錄是主鍵。我想使登錄成爲獨立的字段,但保存主鍵,併爲新用戶生成PK。看起來手動生成是唯一的方法。 –

+0

我想我會讓'Id'爲一個帶有身份的整數,修正所有那些當前是字符串的外鍵 - 這是一種痛苦,但是無論如何你必須做一些修正。然後我會將'Login'作爲「自然」鍵,並按照此處所述進行驗證:http://stackoverflow.com/a/18736484/150342 – Colin

回答

1

SQL Server不支持字符串列類型的標識。您如何期望自定義鍵字符串看起來像? 你可以做你的鑰匙與Guid類型,然後取字符串:

guid.ToString();