ASP 中的连接点 Table .NET 代码优先方法
Junction Table in ASP .NET code first approach
我正在身份用户和游戏 table 之间创建连接 table。这个 table 称为 UserGame,有两个外键(UserID、GameID)和一个用于存储分数的附加字段。
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 });
}
Example of configuring many-to-many relationship in entity framework
Examle of inserting related objects
一些提示:
我不会在联结实体中声明主键,因为联结通常由复合键定义。
请记住,dbcontext.SaveChanges() 将查找子实体并保存它们。
ApplicationUserId
和 GameId
都必须有一个 [Key, Column(Order = 0)]
属性。只需将第一个设置为 Order 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; }
}
然后您可以选择添加新记录,从 Game
或 ApplicationUser
通过导航 属性 或直接使用您的 UserGame
class。
我正在身份用户和游戏 table 之间创建连接 table。这个 table 称为 UserGame,有两个外键(UserID、GameID)和一个用于存储分数的附加字段。
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 });
}
Example of configuring many-to-many relationship in entity framework
Examle of inserting related objects
一些提示: 我不会在联结实体中声明主键,因为联结通常由复合键定义。 请记住,dbcontext.SaveChanges() 将查找子实体并保存它们。
ApplicationUserId
和 GameId
都必须有一个 [Key, Column(Order = 0)]
属性。只需将第一个设置为 Order 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; }
}
然后您可以选择添加新记录,从 Game
或 ApplicationUser
通过导航 属性 或直接使用您的 UserGame
class。