2012-03-25 2 views
0

У меня есть следующий код:Как заполнить таблицу с внешним ключом автоматически

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); 
} 

Я пытаюсь заполнить Gamer идентификатор связанный с ним таблица Игра, в которой есть внешний ключ GamerIDFK.

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

+0

Ваш вопрос немного запутанный, не могли бы вы объяснить, что должна делать страница ?, и вы могли бы также опубликовать свои модели ... –

ответ

0

Из предоставленной Вами информации я должен ваши модели что-то вроде этого:

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; } 

Ваш контроллер должен быть s omething так:

[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 абстрагируется внешних ключей концепций, вам не придется беспокоиться о ид или Ф.К., вы просто «добавить» объекты в коллекции объектов.

+0

Я получаю сообщение об ошибке при создании, есть ли дополнительная поддержка, которую вы можете предоставить – user1137472

+0

Это ошибка: ошибка \t \t 1 'MvcApplication1.Controllers.GameController.Create (MvcApplication1.Models.GameTBL)': не все пути кода возвращают значение \t C: \ UsersMvcApplication1 \ MvcApplication1 \ Контроллеры \ GameController.cs MvcApplication1 – user1137472

+0

my bad, return RedirectToAction («Index»); должен быть вне утверждения if ... Мой ответ обновляется сейчас –

Смежные вопросы