Я создаю соединительную таблицу между 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 });
    }
0
Gareth Quirke 1 Мар 2017 в 00:02

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 классом.

1
dbraillon 28 Фев 2017 в 22:55

Пример настройки отношения «многие ко многим» в структуре сущностей

Пример вставки связанных объектов

Пара советов: я бы не объявлял первичный ключ в сущности соединения, так как соединения обычно определяются составными ключами. Помните, что dbcontext.SaveChanges () будет искать дочерние объекты и сохранять их.

1
Community 23 Май 2017 в 11:54