Я получаю эту ошибку, когда я получаю GetById() в сущности, а затем устанавливаю коллекцию дочерних объектов в свой новый список, который поступает из представления MVC.
Не удалось выполнить операцию: отношения не могут быть изменены потому что один или несколько внешних ключей свойства не являются нулевыми. Когда изменение производится в отношении, связанное с внешним ключом свойство нулевое значение. Если внешний ключ не поддерживать нулевые значения, новый должны быть определены отношения, должно быть назначено свойство внешнего ключа другое ненулевое значение, или не связанный объект должен быть удален.
Я не совсем понимаю эту строку:
Связь не может быть изменена потому что один или несколько внешних ключей свойства не являются нулевыми.
Почему я должен изменить связь между двумя объектами? Он должен оставаться неизменным на протяжении всего срока службы всего приложения.
Код, в котором происходит исключение, - это просто назначить модифицированные дочерние классы в коллекции существующим родительским классам. Это, мы надеемся, будет способствовать устранению классов детей, добавлению новых и модификаций. Я бы подумал, что Entity Framework справляется с этим.
Линии кода можно перегонять до:
var thisParent = _repo.GetById(1);
thisParent.ChildItems = modifiedParent.ChildItems();
_repo.Save();