0
我需要自己生成新的Guid值。目前,我創建的輔助表,這種結構:是否可以手動生成實體框架AspNet Identity的UserId?
(id, aspnet_id)
每當我需要得到用戶的用戶或列表,我不得不加入這兩個表。
我可以告訴實體框架Identity Manager不生成新的Guids,但使用生成的我的值?
我需要自己生成新的Guid值。目前,我創建的輔助表,這種結構:是否可以手動生成實體框架AspNet Identity的UserId?
(id, aspnet_id)
每當我需要得到用戶的用戶或列表,我不得不加入這兩個表。
我可以告訴實體框架Identity Manager不生成新的Guids,但使用生成的我的值?
你說得對,數據庫中沒有生成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; }
}
你不想使用由數據庫生成的主鍵,不是嗎?作爲選項,您可以將Key屬性註釋爲DatabaseGeneratedOption.None,併爲更改跟蹤器中的所有已添加實體分配生成的GUID。 –
Asp.Net Identity類的構造函數中有Guid.NewGuid(),所以我猜這不是創建這些鍵的數據庫。 – EwanCoder