2017-04-08 106 views
0

我需要自己生成新的Guid值。目前,我創建的輔助表,這種結構:是否可以手動生成實體框架AspNet Identity的UserId?

(id, aspnet_id) 

每當我需要得到用戶的用戶或列表,我不得不加入這兩個表。

我可以告訴實體框架Identity Manager不生成新的Guids,但使用生成的我的值?

+0

你不想使用由數據庫生成的主鍵,不是嗎?作爲選項,您可以將Key屬性註釋爲DatabaseGeneratedOption.None,併爲更改跟蹤器中的所有已添加實體分配生成的GUID。 –

+0

Asp.Net Identity類的構造函數中有Guid.NewGuid(),所以我猜這不是創建這些鍵的數據庫。 – EwanCoder

回答

0

你說得對,數據庫中沒有生成guid。如果你看看錶格,你會發現該字段沒有默認值。

除此之外,使用Entity Framework數據庫值必須在類的構造函數中設置。如果不是,則數據庫的默認值將被覆蓋,但數據庫中存在但模型不知道的鍵(自動編號)和字段除外。

因此,如果您創建一個新的IdentityUser,則使用Guid設置Id。但是您可以覆蓋該值:

var appUser = new IdentityUser 
{ 
    UserName = model.Email, 
    Email = model.Email, 
    Id = "the desired guid" 
}; 
var identityResult = await userManager.CreateAsync(appUser, model.Password); 

無論您如何使用userManager或直接添加用戶,這都可以工作。所以答案是肯定的。

一點題外話,你還可以延長IdentityUser添加字段:

public class ApplicationUser : IdentityUser 
{ 
    [Required] 
    public int aspnet_id{ get; set; } 

    public DateTime? LastLogin { get; set; } 
} 
相關問題