将自定义字段添加到identitymodel

时间:2017-01-11 21:40:02

标签: c# asp.net-mvc

我已经为MVC的身份模型添加了一个新字段,

 public class ApplicationUser : IdentityUser
{
    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
        return userIdentity;
    }
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int AccountID { get; set; }
    public int JeAdmin { get; set; }
    public Ekipa Ekipa { get; set; }
}

我的ekipa课程包括以下内容:

     public class Ekipa
{
    public int id { get; set; }
    public string Ime { get; set; }
    public int LeaderID { get; set; }
    public int Geslo { get; set; }

}

如何将从数据库获取的对象设置为登录用户? 我得到了当前的用户,

     ApplicationDbContext db = new ApplicationDbContext();
        var currentUserId = User.Identity.GetUserId();
        var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
        var currentUser = manager.FindById(User.Identity.GetUserId());
        EkipaDb db1 = new EkipaDb();
        currentUser.Ekipa = db1.Ekipa.Where(m => m.id == 1);

如何从ID为1的EkipaDb获取对象,并将其添加到当前用户?

1 个答案:

答案 0 :(得分:0)

您无法将对象添加到数据库表的列中 - 但您可以添加外键。

添加:

public int EkipaId { get; set; }

将Ekipa对象设为虚拟:

[ForeignKey("EkipaId")]
public virtual Ekipa Ekipa { get; set; }

这会将Id对象的Epika存储在ApplicationUser表中,您可以在加载ApplicationUser时使用导航属性来检索对象本身。