Получение следующее сообщение об ошибке при сохранения моего контекста:«Отношения не могут быть изменены, так как один или несколько внешних ключей свойств не является обнуляемым ...»
Операция не удалась: отношения не могут быть изменены, поскольку одно или несколько свойств внешнего ключа не имеют значения NULL. Когда происходит изменение отношения, соответствующее свойство внешнего ключа устанавливается равным нулевому значению. Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, для свойства внешнего ключа должно быть назначено другое ненулевое значение, или не связанный с ним объект должен быть удален.
код контроллера:
#region CreateStory
[HttpPost]
[Authorize]
public ActionResult CreateStory(Userstory story)
{
if (ModelState.IsValid)
{
string _Username = User.Identity.Name.ToLower();
using (var _Db = new NimbleContext())
{
Project _Project = _Db.Projects.First(p => p.Owner.ToLower() == _Username);
if (_Project != null)
{
ProjectGroup _Group = _Db.Groups.First(g => g.GroupID == story.GroupID);
if (_Group != null)
{
_Db.Userstories.Add(story);
_Db.SaveChanges(); <--- Error Occurs here!
return Json(new { Success = true, GroupID = _Group.GroupID });
}
}
}
}
return Json(new { Success = false });
}
#endregion
Структура Модель:
Проект 1 -> * Группы 1 -> * Userstories
я могу предотвратить ошибку из возникающих путем удаления следующих объявлений:
Project _Project = _Db.Projects.First(p => p.Owner.ToLower() == _Username);
ProjectGroup _Group = _Db.Groups.First(g => g.GroupID == story.GroupID);
Однако мне нужно сделать эти проверки, чтобы гарантировать, что пользователь принадлежит проекту и т. Д. Я действительно не вижу, что вызывает ошибку, ни одно из этих утверждений не должно влиять на данные, которые должны быть сохранены правильно?
я создаю некоторые тесты , и я не думаю, что хочу реализовать обходное решение, предложенное ответом. Что вы в итоге сделали? –