2010-04-19 171 views
3

在一個項目,我的工作,我有以下實體:分析師客戶承包商。每個繼承自基類用戶NHibernate的映射子類,並加入 - 亞

public abstract class User { 
    public virtual int Id { get; set; } 
    public virtual string Username { get; set; } 
    public virtual string FullName { get; set; } 
} 

我然後有其他類從基類繼承爲:

public class Analyst : User { 
    // Empty class. There are no additional properties for an analyst. 
} 

public class Client : User { 
    // Empty class. There are no additional properties for a client. 
} 

public class Contractor : User { 
    public int TotalJobs { get; set; } 
    public int JobsInProgress { get; set; } 
} 

對於上述類,我有以下表結構:

USER 
---- 
UserId 
Username 
FullName 
UserType (1 = Analyst, 2 = Client, 3 = Contractor) 


CONTRACTOR 
---------- 
UserId 
TotalJobs 
JobsInProgress 

沒有表分析師和客戶端類。

我想知道如何編寫Contractor類的NHibernate映射文件。對於其他類,我創建了一個用戶映射文件,並將Client和Analyst添加爲子類。我如何映射承包商類?

回答

2

這是一個非常適合的方法在8.1.4. Mixing table per class hierarchy with table per subclass

<subclass name="Contractor" discriminator-value=3> 
    <join table="CONTRACTOR"> 
    <key column="UserId"/> 
    <property name="TotalJobs"/> 
    <property name="JobsInProgress"/> 
    </join> 
</subclass> 
+0

完美!這個伎倆。 – 2010-04-19 15:30:57