我在这里建立了几篇文章:
因此,我使用自定义属性扩展了IdentityUser;一切都很好。这些自定义属性在SQL Server中被指定为具有默认值,即,如果我插入一个新用户,这些自定义道具的默认值应该就弹出了,对吧?
否-它们以NULL值失败(因为它们被指定为NOT NULL),如果我将它们打开为非NOT NULL,它们将在此处失败(在AddClaim行),
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
userIdentity.AddClaim(new Claim("companyId", this.companyId.ToString()));
return userIdentity;
}
因为即使在mssql =“ newcompanyid”中设置了companyId默认值val,它也从未设置为NULL,因此又返回为NULL。
我在这里想念什么?
答案 0 :(得分:1)
感谢tieson
我能够使用这项技术解决此问题:
http://www.vannevel.net/2015/04/03/how-to-configure-a-custom-identityuser-for-entity-framework/
,其依据如下:
所以最后我的代码如下:
public class ApplicationUser : IdentityUser
{
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int companyId { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
userIdentity.AddClaim(new Claim("companyId", this.companyId.ToString()));
return userIdentity;
}
}
希望这对其他人有帮助