代码之家  ›  专栏  ›  技术社区  ›  Rohit Agarwal

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

  •  8
  • Rohit Agarwal  · 技术社区  · 14 年前

    我有一个现有的 Table per class hierarchy :

    <class name="IRoleType" table="RoleType">
    
      <id name="Id" column="RoleID">
        <generator class="native" />
      </id>
    
      <discriminator column="RoleID" />    
    
      <property name="Description" column="Description" />
      <!-- ... more properties ... -->
    
      <subclass name="RoleA" discriminator-value="1" />
      <subclass name="RoleB" discriminator-value="4" />
      <subclass name="RoleC" discriminator-value="7" />
    </class>
    

    IRoleType型 是一个接口,有实现者 罗莱亚 罗莱克 . 这很管用。但问题是-

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

    1 回复  |  直到 11 年前
        1
  •  19
  •   Diego Mijelshon    14 年前

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

    <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" />