ayant un peu de mal avec un mappage pour le moment la configuration du tableau suivant:Mapping Courant: en utilisant join-table et cascades
Shop
[1] [1]
/ \
[n] [n]
Category-[m]---[n]-Article
Le comportement doit être le suivant:
1 - lors de la suppression d'un magasin, tous les articles et catégories devraient être supprimés
2 - lors de la suppression d'une catégorie, les articles connexes devraient désaffecter mais pas supprimé
3 - lors de la suppression d'un article, dans les catégories doivent désaffecter mais pas supprimé
est ici le mappage actuel:
public class ShopMap: ClassMap<Shop>
{
public ShopMap()
{
this.Table("shop");
Id(x => x.Id).Column("id").GeneratedBy.Native();
Map(x => x.Name).Column("name");
HasMany(x => x.Categories).Cascade.AllDeleteOrphan;
HasMany(x => x.Articles).Cascade.AllDeleteOrphan;
}
}
public class CategoryMap: ClassMap<Category>
{
public CategoryMap()
{
this.Table("category");
Id(x => x.Id).Column("id").GeneratedBy.Native();
Map(x => x.Name).Column("name");
References(x => x.Shop);
HasManyToMany(x => x.Articles).Cascade.AllDeleteOrphan()
.Table("article_category")
.ChildKeyColumn("article_id")
.ParentKeyColumn("category_id")
.Inverse();
}
}
public class ArticleMap: ClassMap<Article>
{
public ArticleMap()
{
this.Table("article");
Id(x => x.Id).Column("id").GeneratedBy.Native();
Map(x => x.Name).Column("name");
References(x => x.Shop);
HasManyToMany(x => x.Categories).Cascade.All()
.Table("article_category")
.ParentKeyColumn("article_id")
.ChildKeyColumn("category_id");
}
}
Lors de la suppression d'une catégorie (Session.delete()), NH essaie de supprimer les articles connexes ainsi. Changer le mode Cascade en SaveUpdate va corriger cela, mais laissera les entrées dans le tableau des liens * article_category *. En résumé: Cascade.SaveUpdate est trop paresseux, Cascade.All est trop impatient.
J'ai essayé tout ce qui m'est venu à l'esprit dans les mappages, mais je n'ai pas trouvé de moyen correct de mapper ceci (schéma plutôt simple).
Toutes les idées sur la façon de cartographier (couramment) sont grandement appréciées!
Merci à l'avance
Sebi