0
具有對當前下表設置映射了一點小麻煩:流利的映射:使用連接表和級聯
Shop
[1] [1]
/ \
[n] [n]
Category-[m]---[n]-Article
行爲應該是以下幾點:
1 - 刪除店的時候,所有的文章和類別應被刪除
2 - 刪除一個目錄時,相關文章應該是未分配但未被刪除
3 - 刪除文章的時候,相關的分類應該是未分配但未被刪除
下面是當前映射:
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");
}
}
當刪除一個目錄(使用Session.delete()),NH嘗試刪除相關文章,以及。將級聯模式更改爲保存更新將解決此問題,但會將條目留在鏈接表* article_category *中。總結:Cascade.SaveUpdate太懶,Cascade.All太急切了。
我嘗試了所有在映射中想到的東西,但是找不到映射這個(相當簡單的模式)的正確方法。
有關如何(流利地)映射此任何想法非常感謝!預先
塞比