Entity Framework не может удалить данные из базы данных, которые не были созданы как объекты в памяти.Это означает, что вам нужно будет загрузить школьные данные, все данные учеников, все данные родителей учеников и т. Д., А затем вам нужно будет вручную удалить все данные.
Это кажется большой работой,поэтому вы можете использовать другой подход к этой проблеме - удалить все эти данные, используя хранимую процедуру в базе данных, которая сопоставлена с ObjectContext
, это будет работать лучше, поскольку вам не нужно будет помещать все данные в память.
Но это также кажется проблематичным.Наилучшим подходом было бы создать ограничение Cascade delete
для базы данных и отобразить его также в модели структуры сущностей.Это имеет два преимущества: вам нужно будет загружать только школьные данные, и после того, как они будут удалены из модели, они будут удалены из базы данных, а каскадное удаление приведет к удалению всех ссылочных данных.Но если у вас есть данные о школах и учениках, которые уже находятся в памяти, EF
позаботится о том, чтобы пометить эти объекты из памяти как удаленные, что приведет ваши данные в соответствие с состоянием базы данных.
Лучшее решение этой проблемы зависито том, можете ли вы изменять базу данных или нет.Если можешь - иди на cascade delete
.Если вы не можете - я бы порекомендовал подход stored procedure
как более эффективный (при условии, что производительность является проблемой, и в базе данных много учеников, родителей и т. Д.).