class A {..}
class ContainedA { property of type A and some extra information }
class B : A { collection of type ContainedA }
を保存していないが、いくつかのB年代にAの単一のインスタンスが含まれていることができるようにすることです、B自体は、それが他のAのあなたのアイデアを伝えることができたようNHibernateの1対多の子供
を保持できるタイプAのもありますAとBのマッピング
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="REDACTED"
assembly= "REDACTED">
<class name="A" table="A" discriminator-value="1">
<id name="Id" column="Id" type="int" access="field.camelcase-underscore">
<generator class="identity" />
</id>
<discriminator column="Type" type="int"/>
<subclass name="B" extends="A" discriminator-value="2">
<bag name="ContainedAs" cascade="all">
<key column="AInternalId"/>
<one-to-many class="ContainedA"/>
</bag>
</subclass>
</class>
</hibernate-mapping>
ContainedA
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="REDACTED"
assembly= "REDACTED">
<class name="ContainedA" table="ContainedA">
<id name="Id" type="int" access="field.camelcase-underscore" column="Id">
<generator class="identity" />
</id>
<many-to-one name="A" class="A" column="ContainedAInternalId" cascade="save-update"/>
<property name="SomeOtherInfoString" column="SomeOtherInfoString" not-null="true"/>
</class>
</hibernate-mapping>
のマッピング私の問題は、私はcontaineを保存するときにということですそれはContainedAsのコレクションではなく、実際のAのものではありません。 これは堅牢で、Bは既存のものと存在しないものの両方に割り当てられ、私は単一のセッションを実行したいと考えています.Save(B)とすべてのものを保存しました。
ご迷惑をおかけして申し訳ございません。
EDIT:まだあなたがマッピングに加えて、コードを表示する必要が
'session.SFlush()'の後に助けてもらえます – Firo
@Firo私は試しましたが、役に立たなくなってしまいました。 私はBをBから具体的なサブクラスマッピングに移すことで問題を幾分解決しました。コードBは2つの異なる実装を持つベースサブクラス自体です。明らかにNhibernateはサブクラスのベースマッピング上にあったためバッグを無視しました。 – DorD