2014-06-27 90 views
0

從標識2開始,它們已經從具有整數值的標識(例如1,2,3,4,...)切換到具有nvarchar的標識存儲的ID爲一些長的字符串像通過GUID或標識2中的整數跟蹤用戶

a234vt-23sdlj23klj-34jkh34jh34-23jk4jh2 

如果我創建一個對象,將有屬於人的單一所有者登錄值,所以我需要將用戶ID附加到它,我應該使用Identity 2中的這個新ID,或者我應該嘗試創建一些其他值,如整數並將其放入aspnetusers表中?它真的很重要,我所做的只是按照所有者(userid)獲取禮品對象並在表單上顯示/修改禮品對象。

這裏是我的產品對象

public class Gift 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<Category> Categories { get; set; } 
    public int Rating { get; set; } 
    public GiftStatus Status { get; set; } 
    Public string UserId {get; set; //where userid is the id of the user that owns this object, should it be 3kj23jh3-h3hk1jh2-khj2h34l1b-n22g35l ??? 

} 

回答

1

的一個例子。在使用的GUID用戶ID引用一個用戶,如果這就是你擔心沒有問題。除非你有一個不想使用Guid作爲UserId的特定原因,否則我會建議你只使用默認行爲來簡化實現。有兩個單獨的Id跟蹤用戶聽起來不必要的複雜,我不會推薦這條路徑。

如果你確實需要一個Int作爲主鍵而不是Guid,你可以看看這個:http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx(向下滾動到「讓主鍵的類型可擴展爲Users和角色「部分)。此頁面有一個示例項目鏈接,向您展示如何使用Int作爲PK。它還提到這個擴展可用於將使用Int PK的應用程序遷移到新的Identity 2.0。

這裏的另一篇文章可能會有所幫助:http://www.codeproject.com/Articles/777733/ASP-NET-Identity-Change-Primary-Key

+0

的唯一原因,我想用一個id是速度。因爲我將根據guid從db中獲取大量對象。但是,如果它不能更快​​地使用guid,那麼使用普通的int id,那麼我將使用guid來簡化它。 – user1186050

+0

如果您關注性能,請查看此問題的接受答案:http://stackoverflow.com/questions/11938044/what-are-the-best-practices-for-using-a-guid- as-a-primary-key-specific-rega – Sam

+0

好的用戶名被編入索引,所以如果我需要一種方法來存儲誰擁有什麼,那麼用戶名會和id一樣可以接受?我看不出爲什麼使用nvarchar作爲id的身份2的默認實現在性能方面會很慢,這可能是唯一需要快速獲取的字段?爲什麼MS會讓失敗的執行速度變慢? – user1186050