2012-01-27 2 views
2

Я начал этот проект «билет поддержки», где пользователи могут создавать билеты, а администратор и пользователь могут ответить. Я новичок в MVC3. Я решаю большинство вопросов самостоятельно, но я потратил около 5 часов на этот поиск Google/Stackoverflow, и я просто не могу понять это ... поэтому я пришел к экспертам.Заявление INSERT противоречило FOREIGN KEY

Это ошибка:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Reponses_Tickets1". The conflict occurred in database "C:\USERS\ME\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\TICKETSYSTEM\TICKETSYSTEM\APP_DATA\TICKETSYSTEM.MDF", table "dbo.Tickets", column 'ID'.

Источник ошибки:

Line 21:    response.Body = body; 
Line 22:    model.AddToReponses(response); 
Line 23:    model.SaveChanges(); 
Line 24:    return RedirectToAction("Ticket", new { id = id }); 
Line 25:   } 

Вот полный действие контроллера:

 public ActionResult Responses(int id, string body) 
     { 
      Ticket ticket = GetTicket(id); 
      Response response = new Response(); 
      response.Body = body; 
      model.AddToReponses(response); 
      model.SaveChanges(); 
      return RedirectToAction("Ticket", new { id = id }); 
     } 

Для тех, кому интересно, я был после учебника «От нуля до блога за 100 минут» по мату ewblagden (YouTube), но используя его как систему билета вместо блога. Я слежу за ним по очереди, насколько я могу судить.

Любая помощь будет оценена по достоинству. Благодарю.

+0

Что вы используете для доступа к данным? ActiveRecord, Entity Framework, LINQ to SQL и т. Д. – jrummell

ответ

3

Предполагая, что каждый из ваших ответов связан с билетом так или иначе, вам также нужно сделать это в своем коде!

public ActionResult Responses(int id, string body) 
{ 
    // get the ticket 
    Ticket ticket = GetTicket(id); 

    // create resposne 
    Response response = new Response(); 
    response.Body = body; 

    // *** BEGIN NEW SECTION *** 
    // here, you need to ASSOCIATE your response to the ticket you're retrieved! 
    response.Ticket = ticket; // or something like that...... 

    // or maybe: 
    response.TicketId = ticket.Id; // or something like that...... 
    // *** END NEW SECTION *** 

    model.AddToReponses(response); 
    model.SaveChanges(); 

    return RedirectToAction("Ticket", new { id = id }); 
} 

Прямо сейчас, у вас есть автономные ответы (не связанные с какой-либо Ticket) - и это, очевидно, не работает в вашей базе данных.

+0

Это сработало! Большое спасибо! – Clayton

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