Соединительная таблица в ASP .NET код первый подход

Я создаю соединительную таблицу между 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() будет искать дочерние объекты и сохранять их.

Другие вопросы по тегам