0

我有一個傳統的數據庫(其仍然由另一個遺留應用)父 - >子相對於父 - >基團 - >其中所述基團被規格化和複製到子行子

table parent 
(
    id 
) 

table child 
(
    id 
    parent_id 
    group_id 
    group_name 
    group_Flag 
    group_type 
    name 
) 

和我想將它們映射到

class Parent 
{ 
    public long Id { get; private set; } 
    public ICollection<Group> Groups { get; private set; } 
} 
class Group 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public GroupType Type { get; set; } 
    public bool Flag { get; set; } 
    public ICollection<Child> Childs { get; private set; } 
} 
class Child 
{ 
    public long Id { get; private set; } 
    public string Name { get; set; } 
} 
  1. 這可能嗎?
  2. 如何做,在任何NHibernate的映射方法(XML,MBC,流利,...)

更新:一些額外的信息

  • 架構不能因爲改變在數據庫中的遺留應用程序
  • 額外的觀點是一種選擇
  • 在班級模型泄漏可能

回答

0

這裏有一些首發:

你可以嘗試看看的NHibernate的參考「映射集合」部分: - http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-collections

然後,您可以嘗試使用到Parent類的Groups屬性映射集合映射的「where」子句:

(9)其中,(可選)指定任意的SQL WHERE檢索或者刪除這個集合(有用的,當要使用的條件,如果集合應該只包含的一個子集可用數據)

並以相同的方式映射Group類的Childs屬性。

否則,您可以創建一些看法,以不同的展示你的數據,你的對象映射到這些意見(設置更新=「假」,並插入=「假」到你的標識屬性映射)

+0

我應該放進入組織的哪裏? group_xxx列對於每個孩子都是相同的,對於每個父親,child_id是未知/不同的。 – Firo 2012-07-16 13:32:04

+0

查看更新回答 – mathieu 2012-07-16 13:43:11

+0

如果我有我的視圖'組(group_id,parent_id)'我如何向此添加新組? – Firo 2012-07-16 14:23:22