我看到了有關此主題的答案,但不完全如我的。DELETE語句與參考約束「FK_EntityAEntityB」衝突
我在設計器中使用EF1創建了一個數據庫模式。 我增加了關係一個或零到多在兩個表之間(實體A和實體B)。 接下來,我向表EntityA添加了一條記錄,並向EntityB記錄中添加了一條記錄到EntityB。 正如我在設計模式(在MS SMS中)看到字段EntityA_id(在表EntityB中)設置爲允許NULL, 我試圖刪除表EntityA中的記錄。
我預計該記錄將被刪除,表EntityB中的字段EntityA_id將被自動設置爲NULL。 不幸的是我得到異常:DELETE語句衝突與基準約束「FK_EntityAEntityB」如果與外鍵字段設置爲允許空
爲什麼例外拋出?
感謝您的回答。 NULL分配的作品,但我不得不手動找到許多記錄中的EntityB。使用CLEAR方法似乎不合適,因爲它清除了所有記錄EntityB和EntityA之間的關係。我檢查了CLEAR,它不起作用。數據庫中沒有例外,也沒有影響。 通過ORM自動刪除比手動分配NULL更安全。也許在EF中有一些配置可以生成合適的SQL過程或觸發器。 – Bronek
「,因爲它清除了所有記錄EntityB和EntityA之間的關係」。但是,這不是說如果你想刪除A會發生什麼? –
是的,你是對的。 CLEAR方法更好,因爲保證沒有孤兒。但它不起作用,因爲在我的應用程序中,集合總是空的。我不知道爲什麼。 – Bronek