Nhibernate - View扩展表,不工作

时间:2014-08-25 11:52:16

标签: c# nhibernate

我有一个包含一些字段和属性的表,我创建了一个具有相同字段和属性的视图(唯一的区别是如何计算一个字段)。 现在,我希望视图将扩展表,两个对象的hbm文件是相同的(当然希望名称)

C#代码如下所示:

public class Table
{
    private int x;
    private int y;
}

public class View : Table
{
} 

但是,当我通过nhibernate更新Table对象时,它还更新了View对象,它进行了2次插入操作,我得到了一个异常:     更新或插入视图或功能' ??'失败,因为它包含派生或常量字段

任何人都可以解释\显示我如何在.hbm和.cs文件中进行这种继承

编辑:

hbm文件:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="???" assembly="???">
<class name="Table" table="Table" lazy="true" dynamic-update="true">
<id name="id" type="long" access="field">
  <column name="ID"/>
  <generator class="native"/>
</id>

<property name="x" type="int" access="field" not-null="false"/>
<property name="y" type="int" access="field" not-null="false"/>

</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="???" assembly="???">
<class name="View" table="View" lazy="true" dynamic-update="true">
<id name="id" type="long" access="field">
  <column name="ID"/>
  <generator class="native"/>
</id>

<property name="x" type="int" access="field" not-null="false"/>
<property name="y" type="int" access="field" not-null="false"/>

</class>
</hibernate-mapping>

1 个答案:

答案 0 :(得分:0)

可能与此有关:

  

(10)polymorphism(可选,默认为隐式):确定是否   使用隐式或显式查询多态。

     

隐式多态意味着类的实例将是   由命名任何超类或已实现接口的查询返回   或类和该类的任何子类的实例   由命名类本身的查询返回。显式多态性   表示只返回类实例的查询   显式地命名该类以及该类命名的查询   仅返回在此声明中映射的子类的实例   一个或。对于大多数目的,默认情况下,polymorphism =&#34; implicit&#34;,是   适当。当两个不同时,显式多态性很有用   类被映射到同一个表(这允许&#34;轻量级&#34;   包含表列子集的类。)

取自:http://www.nhforge.org/doc/nh/en/#mapping-declaration-class