2012-07-27 71 views
0

我使用的nHibernate 3.3.1.4與代碼映射。代碼映射:DELETE語句與REFERENCE約束衝突

有Person和Picture對象,其中Person有一個圖片成員。 圖片有一個Id(int)和Image(byte [])成員。 在上傳新的圖片,我想先刪除舊圖片如下:

var person = _personRepository.Get(personId); 
var picture = partner.Picutre; 
_pictureRepository.Delete(picture); 

但是看來我的映射是不正確的,因爲我得到「DELETE語句衝突與基準約束的錯誤.. ......」

這裏是我的映射:

mapper.Class<Person>(map => map.ManyToOne(x => x.Picture, pic => pic.Cascade(Cascade.DeleteOrphans))); 

mapper.Class<Picture>(map => map.Property(x => x.Image, x => x.Type(NHibernateUtil.BinaryBlob))); 

回答

0

宥只需要設置partner.Picutrenull

var picture = partner.Picutre; 
partner.Picutre = null 
_pictureRepository.Delete(picture); 

在這裏你完成了。

+0

我之前有過,只是改回來了。沒有錯誤,但在Person的PictureFk字段設置爲null時,Pictures表中的圖像不會被刪除。 – Krokonoster 2012-07-27 07:49:02

+0

我的意思是你必須把它放在'var picture = partner.Picutre;'和'_pictureRepository.Delete(picture);'之間。我會更新示例。 – hazzik 2012-07-27 11:54:00

相關問題