0

我正在创建身份用户和游戏表之间的连接表。该表称为UserGame,并具有两个外键(UserID,GameID)和一个用于存储分数的附加字段。ASP中的连接表代码第一种方法

public class UserGame 
{ 
    [Key] 
    public string ApplicationUserID { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 

    public int GameID { get; set; } 
    public virtual Game Game { get; set; } 

    public int Score { get; set; } 
} 

我的困惑在于创建一个新的UserGame记录。我如何去做这件事,我的方法是否正确?

更新(这工作):

[HttpPost] 
    public ActionResult SubmitScore(int gameID, int score) 
    { 
     var playerRecord = new UserGame(); 

     playerRecord.ApplicationUserID = User.Identity.GetUserId(); 
     playerRecord.GameID = gameID; 
     playerRecord.Score = score; 

     return Json(new { success = true }); 
    } 

回答

1

ApplicationUserIdGameId必须具有[Key, Column(Order = 0)]属性。刚刚成立的第一个订购0,另一个为1

public class UserGame 
{ 
    [Key, Column(Order = 0)] 
    public string ApplicationUserID { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 

    [Key, Colum(Order = 1)] 
    public int GameID { get; set; } 
    public virtual Game Game { get; set; } 

    public int Score { get; set; } 
} 

然后你可以选择添加新的记录,经过资产净值财产GameApplicationUser或直接与您的UserGame类。

+2

感谢您的帮助!在添加新纪录上仍然有点失落。我选择直接使用我的UserGame类。我在我的控制器中创建了一个新的UserGame对象。我可以分配游戏ID和分数。我想知道这种方法是否正确:检索通过User.Identity.GetUserID()登录的当前用户并将其设置为ApplicationuserID字段。 –

+2

已更新问题以备份此评论,欢呼 –

+0

是的,这是一种方式,要添加新的UserGame实体,将其添加到您的上下文中。你应该把它当作你的DbContext中的DbSet吧? – dbraillon

相关问题