2014-08-25 4 views
0

У меня есть таблица с некоторыми полями и свойствами, и я создал представление с теми же полями и свойствами (единственная разница в том, как вычисляется одно поле). Теперь я хочу, чтобы мнение будет расширить таблицу, НВМ файлы одинаковы для обоих объектов (ожидается название курса)Nhibernate - View extends table, not working

C# код выглядит примерно так:

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

public class View : Table 
{ 
} 

Но когда Я обновляю объект Table через nhibernate, он также обновляет объект View, он делает 2 операции вставки, и я получаю исключение: Обновление или вставка вида или функции '??' не удалось, поскольку он содержит производный или постоянное поле

Может кто-нибудь объяснить \ показать, как я делаю это наследство, как в .hbm и файлы .cs

EDIT:

НВМ файлы:

<?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> 
+0

Содержание HBM файлов поможет, а некоторые из примеров кода, который действительно производит двойную вставку ... Так как в стандартном сценарии, NHibernate делает свою работу должным образом –

ответ

0

это может быть связано с этим:

(10) полиморфизма (необязательно, по умолчанию неявно): Определяет, используется ли неявный или явный полиморфизм запросов.

неявный полиморфизм означает, что экземпляры класса будут возвращаемый запросом, что имена любого суперкласса или реализованный интерфейс или класс, и экземпляры любого подкласса класса будет возвращаемый запросом, который называет класс сам. Явный полиморфизм означает, что экземпляры класса будут возвращены только в виде запросов, которые явно называют этот класс, и эти запросы, называющие этот класс, будут возвращать только экземпляры подклассов, отображаемых внутри этого объявления, как a или. Для большинства целей значение по умолчанию, полиморфизм = «неявное», соответствует . Явный полиморфизм полезен, когда два разных класса отображаются в одну и ту же таблицу (это позволяет использовать «легкий» класс , который содержит подмножество столбцов таблицы).

Примите от: http://www.nhforge.org/doc/nh/en/#mapping-declaration-class