Пожалуйста, обратите внимание на следующее соотношение:Каскад на удаление - сложный тип, сопоставленный с таблицей
Автомобиль (сущность) 1 ---------------------- > * колеса (Entity)
колеса (юридическое лицо) 1 ---------> 1 Гайка (Сложный тип)
колеса (юридическое лицо) 1 ---------> 1 Оправа (сложный тип)
Оба типа комплекта Nut и Rim сопоставляются таблицам с именем Nuts and Rims. Я использую Wheel ID как первичный ключ Nuts and Rims.
Теперь, при попытке удалить автомобиль с помощью кода, я получаю следующее исключение:
System.InvalidOperationException: The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
at System.Data.Entity.Core.Objects.ObjectContext.PrepareToSaveChanges(SaveOptions options)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
При попытке это сделать в ms- SSMS, я получаю эту ошибку: The ВЕЬЕТЕ конфликтные с ССЫЛКА ограничение "FK_dbo.Nuts_dbo.Wheel_Id". Конфликт произошел в базе данных «DatabaseName», таблице «dbo.Nuts», в столбце «Id».
Учитывая, что сложные типы являются обязательными параметрами для объекта и имеют отношение «один к одному», почему каскадное удаление не будет включено по умолчанию в этом сценарии? Во-вторых, как следует устранить CAR и связанные с ним многие колеса вместе со всеми связанными гайками и ободами. Наконец, в моем случае автомобиль имеет тысячи колес. Это хорошая идея для этого в коде или для использования хранимых процедур?
Спасибо.
Если гайка и обойма сложны, тогда они будут сопоставлены столбцам в таблице Wheel. Если у них есть своя таблица, то они представляют собой объекты с отношением от 1 до 1. –