2015-02-19 3 views
0

У меня есть класс POCO настроить так:Добавления данных к IList в БД броски ссылочного нарушения ограничения целостности с помощью EF в MVC

public class Survey 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public virtual IList<Image> Images { get; set; } 
} 

public class Image 
{ 
    [Key] 
    public int ImageID { get; set; } 
    public int SurveyID { get; set; } 
    public string ImageUrl { get; set; } 
    public virtual Survey Survey { get; set; } 
} 

Я могу создать запись в базе данных со всеми полями, установленных соответствующим образом. Когда я пытаюсь редактировать элементы в изображениях, я сталкиваюсь с нарушением ограничения ссылочной целостности. Например, я изначально создал данные с двумя изображениями. В редактировании я добавляю другое изображение в коллекцию. В режиме редактирования я только установить ImageUrl, потому что я ожидаю, что EF, чтобы создать соответствующий ImageID и SurveyID, когда я сохраняю с помощью:

db.Entry(survey).State = EntityState.Modified; 
db.SaveChanges(); 

Я проверил, что изображение [0 и 1] .ImageId, SurveyID, ImageUrl связаны соответствующим образом. Image [2] .ImageId и SurveyID установлены в 0, но я ожидаю, что EF установит их при сохранении в БД.

Я играл с вариантами с помощью modelbuilder, но есть кое-что, что я не получаю. Ваша помощь приветствуется.

Это ошибка, которую я получаю: Дополнительная информация: Нарушение ограничения ссылочной целостности: Значение (ы) свойства 'Survey.ID' на одном конце отношения не соответствует значению (-ам) свойства

EDIT редактировать код '' Image.SurveyID прилагается

public ActionResult Edit([Bind(Include = "ID,Name, Images")] Survey survey) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(survey).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(survey); 
    } 
+0

Можете ли вы опубликовать свой код действия редактирования. –

+0

добавил "редактировать" actionresult – emad

+0

У вас возникла ошибка при попытке отредактировать опрос или изображение? неясно на вопрос –

ответ

0

Я был в состоянии решить эту проблему путем добавления изображений отдельно в моем редактирования ActionResult.

public ActionResult Edit([Bind(Include = "ID,Name,Images")] Survey survey) 
    { 
     if (ModelState.IsValid) 
     { 
      for (var i = 0; i < survey.Images.Count; i++) 
      { 
       if ((survey.Images[i].SurveyID == 0) && (survey.Images[i].ImageID == 0)) 
       { 
        survey.Images[i].SurveyID = survey.ID; 
        db.Images.Add(survey.Images[i]); 
       } 
      } 

      db.Entry(survey).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(survey); 
    } 
Смежные вопросы