I've tidied up the mapping file and switched to using the foreign key
generator but the basic problem you described still remains.
NHibernate keeps insisting upon trying to save B before A, when
instead it needs to save A then B.
The database in question is an older legacy schema which cannot be
changed at this current point in time unfortunately.
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" name="ValueMapping.Foo,
ValueMapping" table="Foo">
<id name="Id" type="int">
<generator class="identity" />
</id>
<one-to-one cascade="all" class="ValueMapping.Bar,
ValueMapping" constrained="true" foreign-key="none" name="Bar" />
<property name="Name" type="string"/>
</class>
<class xmlns="urn:nhibernate-mapping-2.2" name="ValueMapping.Bar,
ValueMapping" table="Bar">
<id name="Id">
<generator class="foreign">
<param name="property">Foo</param>
</generator>
</id>
<one-to-one name="Foo" constrained="true" foreign-
key="FK_BarToFoo"/>
<property name="Rate"/>
<property name="Value"/>
</class>
</hibernate-mapping>
On 25 Jan, 15:18, Fabio Maulo <[email protected]> wrote:
> If A has a constraint where B must exist and B has a constraint where A must
> exist and the only way to know a POID using identity is storing a record how
> you can do it ?
>
> In some case, in NH, you can use <inverse> to define the "owner"of the
> relationship.
> Advise:
> 1) don't send a generated mapping because it is not human-readable
> 2) don't use "native" if native=identity
> 3) don't use composite-key if you don't need it (in your case there is only
> one field)
> 4) have a look to :
> <generator class="foreign">
> <param name="property">Foo</param>
> </generator>
>
> 2010/1/25 Chris C <[email protected]>
>
>
>
>
>
> > If I have a pair of tables that have a one-to-one relation between
> > them, how do I control the order in which they are saved (i.e. define
> > which is the parent)?
>
> > Currently NHibernate keeps trying to save "Bar" before it has saved
> > "Foo" and thus either fails due to a foreign key violation when using
> > something like "guid.comb" or null key error if using something like
> > "native".
>
> > The mapping I have so far is listed below, the example source is at
> >http://gist.github.com/285899
>
> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> > access="property" auto-import="true" default-cascade="none" default-
> > lazy="true">
> > <class xmlns="urn:nhibernate-mapping-2.2" name="ValueMapping.Foo,
> > ValueMapping, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
> > table="`Foo`">
> > <id name="Id" type="System.Int32, mscorlib, Version=2.0.0.0,
> > Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > <column name="Id" />
> > <generator class="native" />
> > </id>
> > <one-to-one cascade="all" class="ValueMapping.Bar, ValueMapping,
> > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
> > constrained="true" foreign-key="none" name="Bar" />
> > <property name="Name" type="System.String, mscorlib,
> > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > <column name="Name" />
> > </property>
> > </class>
>
> > <class xmlns="urn:nhibernate-mapping-2.2" name="ValueMapping.Bar,
> > ValueMapping, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
> > table="`Bar`">
> > <composite-id mapped="false" unsaved-value="undefined">
> > <key-many-to-one name="Foo" class="ValueMapping.Foo,
> > ValueMapping, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
> > <column name="Foo" />
> > </key-many-to-one>
> > </composite-id>
> > <property name="Rate" type="System.Int32, mscorlib,
> > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > <column name="Rate" />
> > </property>
> > <property name="Value" type="System.Int32, mscorlib,
> > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > <column name="Value" />
> > </property>
> > </class>
> > </hibernate-mapping>
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "nhusers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<nhusers%[email protected]
> > >
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.
>
> --
> Fabio Maulo
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.