Я создаю соединительную таблицу между Identity User и игровой таблицей. Эта таблица называется 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 });
}
2 ответа
И ApplicationUserId
, и GameId
должны иметь атрибут [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; }
}
Затем вы можете добавить новую запись, просмотреть свойство nav из Game
или ApplicationUser
или напрямую с вашим UserGame
классом.
Пример настройки отношения «многие ко многим» в структуре сущностей
Пример вставки связанных объектов
Пара советов: я бы не объявлял первичный ключ в сущности соединения, так как соединения обычно определяются составными ключами. Помните, что dbcontext.SaveChanges () будет искать дочерние объекты и сохранять их.
Похожие вопросы
Связанные вопросы
Новые вопросы
asp.net
ASP.NET - это среда разработки веб-приложений Microsoft, которая позволяет программистам создавать динамические веб-сайты, веб-приложения и веб-службы. Полезно использовать этот тег в сочетании с тегом типа проекта, например, [asp.net-mvc], [asp.net-webforms] или [asp.net-web-api]. НЕ используйте этот тег для вопросов о ASP.NET Core - используйте вместо этого [asp.net-core].