NHibernate映射到现有的数据库模式:不确切知道如何解决?

时间:2013-08-05 08:28:37

标签: xml nhibernate mapping many-to-one discriminator

情况如下:

我有一个Oracle数据库,其中给出了数据库模式,因此我无法更改它。 ID是通过数据库生成的,是主键。 OR-mapper是一个自编的,我必须用NHibernate替换它。

我有两个只有关联且没有继承的表:

  1. ModeType :ID,名称,来​​源
  2. 模式:ID,Mode_Type_ID,评论
  3. 我所拥有的课程如下:

    1. ModeType :公共属性:ID,名称,来​​源
    2. ModeProduction :公共属性:ID,ModeType_ID,注释
    3. ModeQualityCheck :公共属性:ID,ModeType_ID,评论
    4. 使用“旧”OR映射器,类 ModeProduction ModeQualityCheck 将持久保存到表模式。例如,您想要检索(然后回写)所有 ModeProducts 模式产品取自表模式,其中“ModeType_ID”是等于 ModeType 表中的“ID”,其中“Origin”= 1.属性/列“Origin”的作用类似于鉴别器,但没有继承。

      那么,我如何在NHibernate中映射它以产生相同的效果:获取所有 ModeProducts (并稍后再写回),其中Origin在 ModeType 中为1表

      到目前为止,我有以下XML映射:

      ModeType:

        <?xml version="1.0" encoding="utf-8" ?>
        <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                           assembly="Domain"
                           namespace="Domain.Domain">
          <class name="ModeTypeBase" table="MODE_TYPES">
            <id name="Id" column="ID" access="nosetter.camelcase-underscore">
              <generator class="sequence">
                <param name="sequence">MODE_TYPES_SEQ</param>
              </generator>
            </id>
            <property name="Name" column="NAME" not-null="true" />
            <property name="Origin" column="ORIGIN" not-null="true" />
          </class>
        </hibernate-mapping>
      

      ModeProduction:(表 ModeType 中的Origin = 1)

      <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                         assembly="Domain"
                         namespace="Domain.Domain">
        <class name="ModeProduction" table="MODES">
          <id name="Id" column="ID" access="nosetter.camelcase-underscore">
            <generator class="sequence">
              <param name="sequence">MODES_SEQ</param>
            </generator>
          </id>
          <property name="Comment" column="COMMENT" not-null="true" />
          <many-to-one name="ModeTypeObject" class="ModeType" column="MODE_TYPE_ID" cascade="save-update" not-null="true" />
        </class>
      </hibernate-mapping>
      

      ModeQualityCheck:(表 ModeType 中的Origin = 0)

      <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                         assembly="Domain"
                         namespace="Domain.Domain">
        <class name="ModeQualityCheck" table="MODES">
          <id name="Id" column="ID" access="nosetter.camelcase-underscore">
            <generator class="sequence">
              <param name="sequence">MODES_SEQ</param>
            </generator>
          </id>
          <property name="Comment" column="COMMENT" not-null="true" />
          <many-to-one name="ModeTypeObject" class="ModeType" column="MODE_TYPE_ID" cascade="save-update" not-null="true" />
        </class>
      </hibernate-mapping>
      

      有人可以帮帮我吗?

0 个答案:

没有答案