Как автоматически заполнить таблицу внешним ключом - PullRequest
0 голосов
/ 25 марта 2012

У меня есть следующий код:

var game = (from k in db.GamerTBLs
where k.UserName == User.Identity.Name
select k.GamerID).Single();
return View(game);

а это мой контроллер:

[HttpPost]
public ActionResult Create(GameTBL gametbl)
{
    if (ModelState.IsValid)
    {
        db.GameTBLs.Add(gametbl);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    var game = (from k in db.GamerTBLs where k.UserName == User.Identity.Name
        select k.GamerID).Single();

    return View(game);
}

Я пытаюсь ввести идентификатор игрока в соответствующую таблицу Game с внешним ключом GamerIDFK.

Может ли кто-нибудь пролить свет, если вам требуется дополнительная информация, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 26 марта 2012

Из предоставленной вами информации я предположил, что ваши модели примерно такие:

GamerTBL:

    public int GamerTBLId { get; set; }
    public string UserName { get; set; }
    public virtual ICollection<GameTBL> GameTBLs { get; set; }

GameTBL:

    public int GameTBLId { get; set; }
    public string GameName { get; set; }
    public int GamerIDFK { get; set; }

Ваш контроллер должен быть чем-токак это:

[HttpPost]
public ActionResult Create(GameTBL gametbl)
{
    if (ModelState.IsValid)
    {
        //First you get the gamer, from GamerTBLs
        var gamer = db.GamerTBLs.Where(k => k.UserName == User.Identity.Name).SingleOrDefault();
        //Then you add the game to the games collection from gamers
        gamer.GameTBLs.Add(gametbl);
        db.SaveChanges();  
    }
    return RedirectToAction("Index");
}

Entity Framework абстрагирует понятия внешних ключей, вам не нужно беспокоиться об id или fk, вы просто «добавляете» объекты в коллекции объектов.

...