使用默认值插入IdentityUser且自定义属性失败

时间:2018-06-27 01:44:46

标签: asp.net asp.net-mvc asp.net-identity

我在这里建立了几篇文章:

因此,我使用自定义属性扩展了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。

我在这里想念什么?

1 个答案:

答案 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;
    }
}

希望这对其他人有帮助