Я знаю, что уже поздно, но, может быть, это кому-нибудь пригодится.Как насчет того, чтобы попробовать это?
var surveyRepository = new SurveyRepository();
surveyRepository.InsertOrUpdate(survey);
foreach (var userAnswer in userAnswers)
{
survey.UserAnswers.Add(userAnswer);
}
surveyRepository.Save();
Недавно я обнаружил, что " Произошло нарушение ограничения ссылочной целостности: значения свойств, которые определяют ссылочные ограничения, не согласованы между основным и зависимыми объектами в отношении. " ошибка, когдаЯ редактировал сущность с детьми.
Это был мой код в начале:
myAction.ActionUserNameAssignations.Clear();
string[] sSelectedValues = CheckBoxListHelper.GetAllIds(collection, "CheckBox_UserName_", true).ToArray();
foreach (string userName in sSelectedValues)
{
ActionUserNameAssignation assignation = new ActionUserNameAssignation { ActionId = myAction.ActionId, UserName = userName };
myAction.ActionUserNameAssignations.Add(assignation);
}
db.Actions.Attach(myAction);
db.ObjectStateManager.ChangeObjectState(myAction, EntityState.Modified);
db.SaveChanges();
И это мой код в конце, работает нормально:
db.Actions.Attach(myAction);
db.ObjectStateManager.ChangeObjectState(myAction, EntityState.Modified);
myAction.ActionUserNameAssignations.Clear();
string[] sSelectedValues = CheckBoxListHelper.GetAllIds(collection, "CheckBox_UserName_", true).ToArray();
foreach (string userName in sSelectedValues)
{
ActionUserNameAssignation assignation = new ActionUserNameAssignation { ActionId = myAction.ActionId, UserName = userName };
myAction.ActionUserNameAssignations.Add(assignation);
}
db.SaveChanges();
Как видите,Разница в основном заключается в присоединении объекта к контексту в начале.Надеюсь, это поможет:)