Привет, ребята. У меня есть модель этого типа
public abstract class BaseEntity
{
public Guid Id {get; set;}
}
class EntityA : BaseEntity
{
..other properties..
IList<EntityB> BEntities {get; set;}
}
class EntityB : BaseEntity
{
..other properties..
EntityA Owner {get, set;}
}
, отображаемая следующим образом:
<class name="BaseEntity" abstract="true" table="TBL_BaseEntity"
dynamic-insert="true" dynamic-update="true" lazy="true" >
<id name="Id"
column="ID_ENTiTY"
type="guid"
unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid.comb" />
</id>
<discriminator column="EtityType" type="string" force="true" />
</class>
<subclass name="EntityA"
extends="BaseEntity"
discriminator-value="A"
dynamic-insert="true"
dynamic-update="true"
lazy="true">
<join table="TBL_ENTITYA">
<key column="ID_ENTITYA" />
...other mapped properties...
<bag name="BEntities" cascade="save-update"
lazy="true" inverse="true" fetch="select" outer-join="true" >
<key column="ID_ENTITYA" />
<one-to-many class="EntityB"/>
</bag>
</join>
</subclass>
<subclass name="EntityB"
extends="BaseEntity"
discriminator-value="B"
dynamic-insert="true"
dynamic-update="true"
lazy="true">
<join table="TBL_ENTITYB">
<key column="ID_ENTITYB" />
...other mapped properties...
<many-to-one name="Owner" not-null="true"
lazy="proxy" fetch="select" column="ID_ENTITYA" />
</join>
</subclass>
Теперь проблема заключается в том, когда я пытаюсь вставить и каскадировать новую EntityA сКоллекция EntityB правильно инициализирована (с точки зрения двунаправленной ассоциации), все работает, но когда я пытаюсь прочитать коллекцию EntityA.BEntities, я получил исключение, в котором говорится, что NH может выполнить запрос.После того, как возникла проблема с NHProf, я увидел, что полученный запрос некорректен, потому что NH добавляет столбец ID_ENTITYA к базовой таблице (которая явно не имеет этого столбца), а не к целевой таблице присоединенных подклассов.Кто-нибудь может помочь мне об этой проблеме?Как я могу избежать такого поведения?Это возможно сделать в NH?
Заранее спасибо.