Person을 삭제할 때 삭제가 계단식으로 설정되어 있으므로 SQLite DB가 설정되어 있습니다. Person (PersonID를 참조하는 모든 레코드가 삭제됨)을 수동으로 삭제하면 정상적으로 작동합니다. 내가 엔티티 프레임 워크는 사람을 삭제하는 데 사용할 때 오류가 발생합니다 :이 발생하는 이유Entity Framework 및 System.Data.SQLite를 사용하여 계단식 삭제 문제가 있습니다.
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.
내가 이해가 안 돼요. 내 트리거는 삭제하라는 메시지를 삭제하기 전에 관련된 모든 객체를 정리하도록 설정됩니다.
모델 편집기로 이동하여 관계 속성을 확인하면 OnDelete 속성에 대한 작업이 표시되지 않습니다. 왜이 설정을 DB에서 가져 와서 올바르게하지 않습니까? 이 값을 Cascade로 변경하면 모든 것이 올바르게 작동하지만 DB에서 모델을 새로 고치면 그 값이 줄어들 기 때문에이 수동 변경에 의존하지 않을 것입니다.
다음은 테이블에 대한 relivent SQL입니다.
CREATE TABLE [SomeTable]
(
[SomeTableID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[PersonID] INTEGER NOT NULL REFERENCES [Person](PersonID) ON DELETE CASCADE
)
CREATE TABLE [Person]
(
[PersonID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT
)
End1 또는 End2를 업데이트해야하는 경우 방법이 있습니까? 아니면 시행 착오일까요? –
데이터베이스가 모델링 된 방식에 따라 다릅니다.만약 당신이 일대 다 관계를 가지고 있다면, 'one' 끝은'Cascade'로 설정되어야합니다. – Omar