Если вы действительно хотите использовать Deleted, вам придется сделать свои внешние ключи обнуляемыми, но тогда вы получите потерянные записи (что является одной из основных причин, по которой вы не должны этого делать в первую очередь). Так что просто используйтеRemove()
ObjectContext.DeleteObject (entity) отмечает объект как удаленный в контексте. (После этого EntityState удаляется.) Если после этого вы вызываете SaveChanges, EF отправляет SQL-запрос DELETE в базу данных. Если никакие ссылочные ограничения в базе данных не нарушаются, объект будет удален, в противном случае выдается исключение.
EntityCollection.Remove (childEntity) помечает связь между parent и childEntity как удаленную. Если сам childEntity удален из базы данных, и что именно происходит при вызове SaveChanges, зависит от типа отношений между ними:
Стоит отметить, что настройка .State = EntityState.Deleted не вызывает автоматически обнаруживаемых изменений. ( архив )