2010-08-31 6 views
1

I ont trois cartographies comme suit:cascade NHibernate et inverse

public MainChapterMap() 
{ 
    // other properties 

    HasMany(x => x.ClientSpecific).KeyColumn("MainChapterId"); 
} 

public MainChapterClientMap() 
{ 
    // other properties 

    References(x => x.MainChapter).Column("MainChapterId"); 
    HasMany(x => x.Details).KeyColumn("MainChapterClientId"); 
} 

public MainChapterClientDetailMap() 
{ 
    // other properties 

    References(x => x.MainChapterClient).Column("MainChapterClientId"); 
} 

MainChapter a de nombreux chapitres spécifiques au client. Les chapitres spécifiques au client (MainChapterClient) a de nombreuses traductions (MainChapterClientDetail)

Les règles DELE devraient être comme suit:

  1. Lorsque vous supprimez un MainChapter
    • Supprimer la MainChapterClient ligne
    • Supprimer la MainChapterClientDetail rangée (s)
  2. Lorsque dele ting un MainChapterClient
    • Ne supprimez pas la MainChapter ligne
    • Supprimer la MainChapterClientDetail ligne (s)
  3. Lorsque vous supprimez un MainChapterClientDetail
    • Ne supprimez pas la MainChapter ligne
    • NE PAS supprimer le MainChapterClientDetail ligne (s)

Mais je ne importe ce que je finis par obtenir cette erreur:

deleted object would be re-saved by cascade (remove deleted object from associations)[Entities.MainChapterClient#39]

Je ne sais pas comment mettre en place mes cascades plus. Toute aide est plus que bienvenue!

Répondre

1

Vous devez supprimer la référence des deux côtés:

MainChapterClient.Details.Remove(instance); 
instance.MainChapterClient = null; 
+0

Merci, il m'a aidé aussi. –

Questions connexes