2016-05-07 17 views
1

在我的數據模型中,我有一個播放列表實體,該播放列表實體與播放列表中的項目具有多對多關係,並且具有相反的關係。我應該在播放列表實體中使用什麼刪除規則?

當播放列表被刪除時,我想要刪除它中的所有東西,所以我使用Cascade刪除規則。當播放列表中的項目被刪除時,只需刪除該項目即可。我應該使用哪個規則?

我會說明這一點。

首先,管理的對象是這樣的

Playlist 1 
items: a, b, c 

Playlist 2 
items: d 

item a 
playlist: 1 

item b 
playlist: 1 

item c 
playlist: 1 

item d 
playlist: 2 

如果我刪除播放列表1,它看起來就像這樣:

Playlist 2 
items: d 

item d 
playlist: 2 

如果我刪除d,它看起來像這樣

Playlist 1 
items: a, b, c 

Playlist 2 
items: 

item a 
playlist: 1 

item b 
playlist: 1 

item c 
playlist: 1 

從文檔中,我不知道哪個規則用於反比關係。

  • 拒絕:該項目只有在沒有播放列表時纔會被刪除。但是,由於對多關係中的級聯規則,項目總是會有播放列表

  • Nullify:這隻會刪除播放列表和項目之間的關係,但不會刪除項目。我希望項目被刪除。

  • 級聯:很顯然,我不希望當我刪除的項目

  • 無操作的播放列表中刪除:這將導致該項目被刪除,但播放的items屬性將仍持有參考到那個項目。

我想我一定誤解了其中的一個規則。必須有一個我可以使用的,對吧?

注意:這不是this的重複項,因爲OP希望管理器在沒有員工時也被刪除。但是我想在播放列表中的所有項目都被刪除時仍然保留播放列表。

回答

1

刪除規則指的是關係的目標,並說「當這個對象被刪除時我該怎麼做相關對象」。無論如何,你的item將被刪除,因爲這就是你正在做的。即防止item被刪除的唯一規則是deny

item逆關係的情況下,playlist你想nullify,因爲這將刪除播放列表中的項目的參考。

+0

但是,如果我使用nullify並刪除很多對象,它們仍然會在硬盤中,對嗎?如果我刪除了很多,他們可能會佔用很多空間。我誤解了什麼嗎? – Sweeper

+0

你是誤會。它是從播放列表到該項目的前向引用,將被取消(因爲該項目不再存在)。該項目將被刪除 – Paulw11

+0

我現在明白了。所以它有點像ARC,對吧?當引用設置爲null時,該對象將自動進行垃圾收集。 – Sweeper

相關問題