DeleteBehavior Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, как операция удаления применяется к зависимым сущностям в связи при удалении субъекта или в том, что связь является серьезной.
Поведение в базе данных зависит от схемы базы данных, создаваемой соответствующим образом. С помощью Entity Framework миграции или создаст EnsureCreated() соответствующую схему.
Обратите внимание, что поведение в памяти для сущностей, которые в настоящее время отправляются с помощью, DbContext может отличаться от поведения, происходящего в базе данных.
public enum DeleteBehavior
type DeleteBehavior =
Public Enum DeleteBehavior
- Наследование
-
DeleteBehavior
Поля
Cascade | 3 | Для сущностей, отслеживаемых DbContext , зависимые сущности будут удалены при удалении связанного субъекта. Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет таким же, как описано выше для отслеживаний сущностей. Помните, что некоторые базы данных не могут легко поддерживать такое поведение, особенно при наличии циклов в отношениях. в этом случае лучше использовать, что позволит ClientCascade EF выполнять каскадное удаление в загруженных сущностях, даже если база данных не поддерживает это. Это значение по умолчанию для необходимых связей. То есть для связей, которые имеют внешние ключи, не допускающие значения NULL. |
ClientCascade | 4 | Для сущностей, отслеживаемых DbContext , зависимые сущности будут удалены при удалении связанного субъекта. Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет выдавать ошибку при нарушении ограничения внешнего ключа. |
ClientNoAction | 6 | Примечание. это нередкое использование этого значения. Рекомендуется использовать ClientSetNull вместо этого, чтобы соответствовать поведению EF6 с отключенными каскадными удалениями. Для сущностей, отслеживаемых DbContext , значения свойств внешнего ключа в зависимых сущностях не изменяются при удалении связанной сущности субъекта. Это может привести к несогласованному графу сущностей, в которых значения свойств внешнего ключа не соответствуют связям в графе. Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет выдавать ошибку при нарушении ограничения внешнего ключа. |
ClientSetNull | 0 | Для сущностей, отслеживаемых DbContext , значения свойств внешнего ключа в зависимых сущностях устанавливаются в значение null при удалении связанного субъекта. Это позволяет сохранять граф сущностей в стабильном состоянии, пока они отслеживаются, чтобы полностью согласовать граф можно было записать в базу данных. Если свойство не может иметь значение null, так как оно не является типом, допускающим значение null, то при вызове будет создано исключение SaveChanges() . Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет выдавать ошибку при нарушении ограничения внешнего ключа. Это значение по умолчанию для необязательных связей. То есть для связей, имеющих внешние ключи, допускающие значение null. |
NoAction | 5 | Для сущностей, отслеживаемых DbContext , значения свойств внешнего ключа в зависимых сущностях устанавливаются в значение null при удалении связанного субъекта. Это позволяет сохранять граф сущностей в стабильном состоянии, пока они отслеживаются, чтобы полностью согласовать граф можно было записать в базу данных. Если свойство не может иметь значение null, так как оно не является типом, допускающим значение null, то при вызове будет создано исключение SaveChanges() . Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет выдавать ошибку при нарушении ограничения внешнего ключа. |
Restrict | 1 | Для сущностей, отслеживаемых DbContext , значения свойств внешнего ключа в зависимых сущностях устанавливаются в значение null при удалении связанного субъекта. Это позволяет сохранять граф сущностей в стабильном состоянии, пока они отслеживаются, чтобы полностью согласовать граф можно было записать в базу данных. Если свойство не может иметь значение null, так как оно не является типом, допускающим значение null, то при вызове будет создано исключение SaveChanges() . Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет выдавать ошибку при нарушении ограничения внешнего ключа. |
SetNull | 2 | Для сущностей, отслеживаемых DbContext , значения свойств внешнего ключа в зависимых сущностях устанавливаются в значение null при удалении связанного субъекта. Это позволяет сохранять граф сущностей в стабильном состоянии, пока они отслеживаются, чтобы полностью согласовать граф можно было записать в базу данных. Если свойство не может иметь значение null, так как оно не является типом, допускающим значение null, то при вызове будет создано исключение SaveChanges() . Если база данных была создана из модели с помощью Entity Framework миграции или EnsureCreated() метода, то поведение в базе данных будет таким же, как описано выше для отслеживаний сущностей. Помните, что некоторые базы данных не могут легко поддерживать такое поведение, особенно при наличии циклов в связях. в этом случае лучше использовать, ClientSetNull что позволит EF разрешать значения NULL в загруженных сущностях, даже если база данных не поддерживает эту функцию. |
Комментарии
Дополнительные сведения см. в разделе каскадное удаление и удаление потерянных данных в EF Core .