NHibernate'i (Fluent-NHibernate eşleştirmeleriyle) son bir kaç hafta içinde ilk defa bir projede kullanıyorum, bir sorunla karşılaştığım güne kadar hepsi iyi gidiyordu (büyük ihtimalle kendi hatam).NHibernate, "On Delete Cascade", ilgili tablolardaki satırları silme çağlayanı mı?
ben başarmak için çalışıyorum göstermek için küçük bir örnek yaptık: Örnekte
public class Image
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Path { get; set; }
}
public class FeaturedImage
{
public virtual int Id { get; set; }
public virtual Image Image { get; set; }
public virtual string Description { get; set; }
public virtual DateTime Date { get; set; }
}
public class ImageMap : ClassMap<Image>
{
public ImageMap()
{
Id(x => x.Id).GeneratedBy.Identity().UnsavedValue(0);
Map(x => x.Name);
Map(x => x.Path);
}
}
public class FeaturedImageMap : ClassMap<FeaturedImage>
{
public FeaturedImageMap()
{
Id(x => x.Id).GeneratedBy.Identity().UnsavedValue(0);
Map(x => x.Description);
Map(x => x.Date);
References(x => x.Image).Not.Nullable().Cascade.Delete();
}
}
yukarıda, her gün bir resim, bir "özellikli" görüntü olarak aldım alır Birden fazla resim var, Aynı görüntü birden çok kez gösterilebilir. İstediğim davranış, resim kimliğinin otomatik olarak silinmesini belirten herhangi bir FeaturedImage girişini silmemdir.
:The DELETE statement conflicted with the REFERENCE constraint "FKF42D8269692640D". Conflict table "dbo.FeaturedImage", column 'Image_id'.
el ile çalıştığını görüntü kimliği yabancı anahtar kısıtlaması için "SİL ÇORUH AÇIK" eklerseniz: Ancak şu anda bunun bir hata atar yer almıştır Görüntü silmeye çalışırsanız
alter table [FeaturedImage]
add constraint FKF42D8269692640D foreign key (Image_id) references [Image] ON DELETE CASCADE
... ama bunu yapmanın önerilen yolu olup olmadığından emin değilim? Herkes bunu başarmanın en iyi yolunu önerebilirse, çok takdir edilecektir! Şimdiden teşekkürler.
Teşekkürler! FeaturedImageMap dosyasından '.Cascade.Delete()' yi sildim ve 'HasMany (x => x.Featured) .Inverse(). ForeignKeyCascadeOnDelete(). KeyColumn (" Image_id ");' ImageMap'e ekledim. Şimdi mükemmel çalışıyor gibi görünüyor. –