簡體   English   中英

與ASP.NET身份表和自定義表有多對多的關系

[英]Many to many relationship with ASP.NET Identity Table and Custom Table

我在ASP.NET Identity的AplicationUser表與自定義表(Teams)之間有很多關系。 我需要插入一個用戶並將其鏈接到數據庫中已存在的團隊,它還必須在ApplicationUserTeams表中插入一條記錄。 我正在做這樣的事情,但它在Team表中創建了一條新記錄。 我無法訪問UserManager上下文以附加團隊。 我很感激任何想法?

public async Task<IHttpActionResult> RegisterUser(RegisterRecordBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };

        var Team = new Team();
        Team.TeamId = model.teamId;
        user.Teams.Add(team);

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        return Ok();
    }

這個型號: 在此輸入圖像描述

將實體添加到上下文時,所有粘附實體在尚未附加到上下文時也會標記為已Added 這是一個EF功能,讓開發人員感到困惑。

一旦你知道它,如果你有權訪問上下文,它很清楚該做什么:

var team = new Team();

team.TeamId = model.teamId;
user.Teams.Add(team);
context.Teams.Attach(team);
...

但我不知道你是如何實例化你的UserManager 您可能無法訪問控制器代碼中的上下文。 如果是這樣,最好將聯結表合並到類模型中,這將使裸類模型如下所示:

class ApplicationUserTeam
{
    [Key, Column(Order = 1)]
    public int ApplicationUserID { get; set; }
    [Key, Column(Order = 2)]
    public int TeamID { get; set; }
    public ApplicationUser ApplicationUser { get; set; }
    public Team Team { get; set; }
}

class ApplicationUser
{
    public ApplicationUser()
    {
        ApplicationUserTeams = new HashSet<ApplicationUserTeam>();
    }
    public int ID { get; set; }
    public ICollection<ApplicationUserTeam> ApplicationUserTeams { get; set; }
}

class Team
{
    public Team()
    {
        ApplicationUserTeams = new HashSet<ApplicationUserTeam>();
    }
    public int ID { get; set; }
    public ICollection<ApplicationUserTeam> ApplicationUserTeams { get; set; }
}

現在,您只需將ApplicationUserTeam對象添加到ApplicationUser.ApplicationUserTeams

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM