2011-12-17 51 views
1

對於一對多ORM對象「藝術家」和「藝術」,通常會使用一個名爲ArtistID的藝術表,標題爲「藝術家」的外鍵, (它使用,驚喜,藝術家表的主鍵)。當我有特定的藝術家(稱爲「藝術家」)並試圖EntityDelete(「本藝術家」)時,出現錯誤:CF9 ORM實體刪除外鍵

DELETE語句與參考約束「FK_Art_Artists」衝突。衝突發生在數據庫「ArtistTracker」,表「dbo.Art」,列'ArtistID'中。

我感到非常自信,我正在做一些愚蠢的事情,無論是關於我的關係設置還是我的語法。有沒有人遇到過這個?如果EntityDelete()對Art表中的條目有外鍵約束,我就沒有看到如何使用EntityDelete()的示例。

回答

2

您的藝術家可能擁有「藝術」屬性,對嗎?據推測,這指向了藝術CFC。你的藝術品可能看起來像屬性名稱=「藝術」CFC =「藝術」fieldtype =「一對多」;

缺少的是告訴ORM如何處理刪除Artist的情況。在你的情況下,你需要在arts屬性中添加一個「級聯」屬性,如下所示:property ... cascade =「all-delete-orphan」;

然後,當您刪除藝術家時,Hibernate也會刪除屬於該藝術家的任何孤立的藝術元素。

創建一對多關係時,幾乎總是要指定cascade =「一對多」和inverse =「true」。

+0

我在最近的演示文稿中介紹了這一點以及許多其他導致ORM新手感到痛苦的事情。代碼在這裏:https://github.com/marcesher/ormzen 你可以在這裏觀看preso:http://cfmumbojumbo.com/cf/index.cfm/cfconferences/cfobjective-2011/orm-zen-marc-伊舍/ – 2011-12-17 21:39:17