вставить IdentityUser со значениями по умолчанию и пользовательские свойства не удается - PullRequest
0 голосов
/ 27 июня 2018

Я строю пару постов здесь:

Итак, я расширил свой 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;
}

потому что, хотя val по умолчанию для companyId установлен в mssql = "newcompanyid", он никогда не устанавливается из NULL и поэтому возвращается как NULL.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 28 июня 2018

благодаря связи
я смог исправить это с помощью этой техники:

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

надеюсь, это поможет кому-то еще

...