0

我具有分層(樹結構)SQL Server表TEmployee與下面的列流利Nhinernate映射分層/樹結構表

Id bigint identity(1,1) not null 
FirstName nvarhcar(50) not null 
LastName nvarchar(50) not null 
ManagerId bignint null 

列標識是主鍵。每位員工都有或有一位經理;如果他/她這樣做,則他/她自己的列ManagerId的值引用另一個經理員工行的值Id。 For Instance some table for TEmployee:

1 John Doe null 
2 Jane Smith 1 
3 Keith Johnson 1 
4 Fox Lynson 2 
5 Kim McFeinstein 4 
... 

員工John Doe沒有經理。但他是Jane Smith和Keith Johnson的經理。 Kim McFeinstein的經理是Fox Lynson。

我想知道如何使用Fluent NHibernate映射編寫一個領域模型類和一個映射類。另外,我想在映射類的代碼時知道級聯刪除的好方法。換句話說,如果我刪除John Doe,那麼它的所有子女(由John Doe管理的員工)也將被遞歸刪除。

請幫忙。謝謝。

域模型類,但我不知道它的源代碼:

public class Employee 
{ 
    public virtual long Id {get;set;} 
    public virtual string FirstName {get;set;} 
    public virtual string LastName {get;set;} 
    public virtual Employee Manager {get;set;} // not sure here ??? 
} 

測繪類,但我不知道它的源代碼,也:

public class EmployeeMap : MapClass<Employee> 
{ 
    Table("TEmployee"); 
    SchemaAction.None(); 
    // not sure about following codes 
    ??? 
} 
+0

FIRO,謝謝你非常。 – user1219702

+0

看看你的問題的答案,並接受回答你的問題的最好的答案。如果沒有人會將您引導至解決方案,請添加提交或編輯問題以說明爲何它不回答並提供其他信息 – Firo

回答

1
public class Employee 
{ 
    public virtual long Id {get; private set;} 
    public virtual string FirstName {get;set;} 
    public virtual string LastName {get;set;} 
    public virtual Employee Manager {get;set;} 
    public virtual ICollection<Employee> ManagedEmployees {get; private set;} 
} 

public class EmployeeMap : MapClass<Employee> 
{ 
    Table("TEmployee"); 
    SchemaAction.None(); 

    Id(e => e.Id).GeneratedBy.HiLow("1000"); 
    References(e => e.Manager, "ManagerId"); 
    HasMany(e => e.Manager).KeyColumn("ManagerId").Cascade.All(); 
}