2010-06-12 95 views
0

我遇到映射問題。流利Nhibernate映射兩個數據庫表上的單個類

我在我的數據庫中的兩個表如下:員工和EmployeeManagers

員工

僱員INT 名稱爲nvarchar

EmployeeManagers

EmployeeIdFk INT ManagerIdFk INT

所以該員工可以有0個或更多個管理RS。經理本身也是一名員工。

我有下面的類來表示

public class Employee 
{ 
public virtual int Id 
{ 
    get; 
    set; 
} 

public virtual string Name 
{ 
    get; 
    set; 
} 

public virtual IList<Employee> Managers 
{ 
    get; 
    protected set; 
} 

public Employee() 
{ 
    Managers = new List<Employee>(); 
} 
} 

我沒有任何類來表示Manager,因爲我覺得沒有必要爲它的員工和管理者,作爲經理本身是員工。

我正在使用autoMapping,我只是無法弄清楚如何映射這個類到這兩個表。我正在實施IAutoMappingOverride以覆蓋Employee的自動映射,但我不確定要在其中執行什麼操作。

public class NodeMap : IAutoMappingOverride 
{ 
    public void Override(AutoMapping<Node> mapping) 
    { 
     //mapping.HasMany(x => x.ValidParents).Cascade.All().Table("EmployeeManager"); 
     //mapping.HasManyToMany(x => x.ValidParents).Cascade.All().Table("EmployeeManager"); 
    } 
} 

我還想確保員工不能分配兩次相同的管理員。這是我可以在我的應用程序中驗證的,但我想對EmployeeManager表(例如組合鍵)施加約束,以便同一個經理不能多次分配給一個員工。

任何人都可以幫助我嗎?

等待 納比爾

回答

0

我結束了在新功能NHibernate 1.1版本做這樣

public abstract class Node 
    { 
     public virtual int Id 
     { 
      get; 
      set; 
     } 

     public virtual Node ParentNode 
     { 
      get; 
      set; 
     } 

     public virtual IList<Node> ChildNodes 
     { 
      get; 
      protected set; 
     } 

     protected Node() 
     { 
      ChildNodes = new List<Node>(); 
     } 

     public virtual void AddChildNode(Node childNode) 
     { 
      childNode.ParentNode = this; 
      ChildNodes.Add(childNode); 
     } 

    } 

public class NodeMap : IAutoMappingOverride<Node> 
{ 
    public void Override(AutoMapping<Node> mapping) 
    { 
     //self referencing 
     //http://stackoverflow.com/questions/1547956/fluent-nhibernate-automappings-with-self-reference 
     mapping.References(x => x.ParentNode).Column("ParentNodeFk").Cascade.SaveUpdate(); 
     mapping.HasMany(x => x.ChildNodes).Cascade.SaveUpdate().KeyColumn("ParentNodeFk");    

    } 
} 
+0

我還必須使用最新版本的Fluent NHibernate,即1.1,其中automappign現在支持自引用。 This http://stackoverflow.com/questions/1547956/fluent-nhibernate-automappings-with-self-reference也幫助我 – nabeelfarid 2010-06-23 10:33:35