3
我有我的「類別」對象下面的模型類:流利的NHibernate映射爲一個類別/子類別樹
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual IList<Category> SubCategories { get; set; }
這是「類別」我的功能NHibernate映射類:
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name);
References(x => x.ParentCategory).Column("ParentCategoryId");
// ** THE BELOW MAPPING IS WHAT I'M UNSURE ABOUT **
HasMany(x => x.SubCategories).Where(x => x.Id == x.ParentCategory.Id);
我的數據庫,這涉及由許多「類別」,其中一些是在根級別(和具有ParentCategoryId = NULL)的和所有其它的是子類中,w這可能只有1層深,或者可能是3,4,5層(遞歸父母備份到根/父類別ID。行/記錄之間關係的
例子:
Cars (Id = 1 - ParentCategoryId = NULL)
Cars (Id = 1) > Hatchback (Id = 2 - ParentCategoryId = 1)
Cars (Id = 1) > Hatchback (Id = 2) > Ford (Id = 3 - ParentCategoryId = 2)
Motorcycles (Id = 4 - ParentCategoryId = NULL)
Motorcycles (Id = 4) > Scooters (Id = 5 - ParentCategoryId = 4)
我Category類中的「子類別」屬性需要檢索具有當前類別的「ParentCategoryId」所有類別(同上) ,但我不確定我如何去繪製這個圖。我已經嘗試了上例中顯示的HasMany映射,但失敗了。
當我執行上述,我得到類別和子類別的正確關係。例如:1 => 4,5; 2 => 6,7。但我也得到列表子類別。所以最終看起來像1 => 4,5; 2 => 6,7; 4; 5; 6; 7.實際上是子類別的4-7也在類別中被檢索到同一級別。希望我對你有意義。你是怎麼解決這個問題的? – jaxxbo