Когда я сохраняю сущность с помощью структуры сущностей, я, естественно, предполагал, что она попытается сохранить только указанную сущность. Однако он также пытается сохранить дочерние сущности этой сущности. Это вызывает всевозможные проблемы с целостностью. Как заставить EF сохранять только тот объект, который я хочу сохранить, и, следовательно, игнорировать все дочерние объекты?
Если я вручную установил для свойств значение null, я получаю сообщение об ошибке «Операция завершилась неудачно: связь не может быть изменена, поскольку одно или несколько свойств внешнего ключа не допускают значения NULL». Это крайне контрпродуктивно, поскольку я специально установил для дочернего объекта значение null, чтобы EF оставил его в покое.
Почему я не хочу сохранять / вставлять дочерние объекты?
Поскольку это обсуждается в комментариях, я дам некоторое обоснование того, почему я хочу, чтобы мои дочерние объекты оставались в покое.
В приложении, которое я создаю, объектная модель EF не загружается из базы данных, а используется в качестве объектов данных, которые я заполняю при анализе плоского файла. В случае дочерних объектов многие из них относятся к таблицам поиска, определяющим различные свойства родительской таблицы. Например, географическое положение основного объекта.
Поскольку я сам заполнил эти объекты, EF предполагает, что это новые объекты, которые необходимо вставить вместе с родительским объектом. Однако эти определения уже существуют, и я не хочу создавать дубликаты в базе данных. Я использую объект EF только для поиска и заполнения внешнего ключа в моей основной таблице.
Даже с дочерними объектами, которые являются реальными данными, мне нужно сначала сохранить родительский и получить первичный ключ, иначе EF просто напутает. Надеюсь, это даст какое-то объяснение.