2012-07-27 70 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

相关问题