在我正在进行的项目中,我有以下实体:分析师、客户 和承包商。每个都继承自基类 User。
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
没有用于 Analyst 和 Client 类的表。
我想知道如何为 Contractor 类编写 NHibernate 映射文件。对于其他类,我创建了一个 User 映射文件并将 Client 和 Analyst 添加为子类。如何映射 Contractor 类?
最佳答案
这非常适合 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>
关于子类和连接子类的 NHibernate 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667439/