Entityframework 4: проблема с ForeignKey при удалении дочерней сущности из родительской коллекции - PullRequest
2 голосов
/ 16 июля 2010

Впервые в EF у меня есть проблема.

ОК, поэтому у меня есть сущность со связанной таблицей (отношение один ко многим).Сущность содержит коллекцию дочерних объектов из связанной таблицы.Я хочу удалить объект из связанной коллекции, но не из дочерней таблицы.

Однако, когда я вызываю <entity>.myRelatedChildTable.Remove( childEntity ), а затем вызываю _context.SaveChanges( ), я получаю исключение относительно ограничений ForeignKey.Теперь, если я позвоню _context.DeleteObject(), а затем _context.SaveChanges(), у нас нет проблем.Но теперь у нас также нет дочерней сущности - она ​​удалена из БД.

Вот текст исключения: Операция не выполнена: связь не может быть изменена, поскольку один или несколькоиз свойств внешнего ключа не обнуляется.Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение.Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть назначено другое ненулевое значение или несвязанный объект должен быть удален.

любойесть идея / предложение, как я могу это исправить?

1 Ответ

1 голос
/ 16 июля 2010

Похоже, вы пытаетесь отделить EF от базы данных.К сожалению, сохранение изменений возвращает изменения обратно в базу данных, что, очевидно, вам не нужно.Вы можете просто не вызывать SaveChanges и продолжать работать с коллекцией.EF будет учитывать ваше удаление и не будет возвращать эту информацию.В конце вы можете отказаться от своих изменений и двигаться дальше.

Если вы действительно хотите удалить элемент, не удаляя дочерний элемент, вы не можете в текущей схеме.Вы должны разрешить нулевые значения в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...