将多个鉴别器值映射到NHibernate中的单个默认类

将多个鉴别器值映射到NHibernate中的单个默认类,nhibernate,inheritance,nhibernate-mapping,Nhibernate,Inheritance,Nhibernate Mapping,我有一个包含数据的现有角色类型表。我正尝试使用以下方法在NHibernate中映射此表: 这里,IRoleType是一个接口,实现者有RoleA、RoleB和RoleC。这很有效。但问题是- 该表包含具有未映射到持久类的“额外”鉴别器值(2、3、5、6)的行。这些值在域中已弃用,因此为每个值创建持久类是没有用的。但是我们也不能从数据库中删除它们 有没有办法将这些额外的行映射到一个“默认”类?如果没有,我还能如何解决这个问题 谢谢 您可以通过将这些值映射到单个值来实现这一点。例如: <d

我有一个包含数据的现有角色类型表。我正尝试使用以下方法在NHibernate中映射此表:


这里,IRoleType是一个接口,实现者有RoleARoleBRoleC。这很有效。但问题是-

该表包含具有未映射到持久类的“额外”鉴别器值(2、3、5、6)的行。这些值在域中已弃用,因此为每个值创建持久类是没有用的。但是我们也不能从数据库中删除它们

有没有办法将这些额外的行映射到一个“默认”类?如果没有,我还能如何解决这个问题


谢谢

您可以通过将这些值映射到单个值来实现这一点。例如:

<discriminator
    formula="case when RoleID in (2,3,5,6) then 0 else RoleId end" />    
<subclass name="RoleA" discriminator-value="1" />
<subclass name="RoleB" discriminator-value="4" />
<subclass name="RoleC" discriminator-value="7" />
<subclass name="DefaultRole" discriminator-value="0" />

<discriminator
    formula="case when RoleID in (2,3,5,6) then 0 else RoleId end" />    
<subclass name="RoleA" discriminator-value="1" />
<subclass name="RoleB" discriminator-value="4" />
<subclass name="RoleC" discriminator-value="7" />
<subclass name="DefaultRole" discriminator-value="0" />