Hola buenas,
Tengo dos pequeños problemas.
1) Tengo dos tablas relacionadas 1 (Tabla A) a N (Tabla B). Resulta
que quiero agregar un nuevo registro en A que contiene una lista de
elementos nuevos en B. La lógica me dice que creo una instancia de A y
a su lista de objetos B, le agrego una instancia de B.
Cuando quiero persistir A, me da un error en B de que no puede poner a
null la foreign key. Se supone que NH debería persistir A y después
persistir B con el ID obtenido de A.
Si en lugar de hacer A.Lista.Add(B) hago B.A = A y lo agrego a la
lista funciona. Los mapeos son los siguientes:
Relación de A (Tramit) con B (HistoricEstats) (relación 1 a n):
<set name="HistoricEstats" cascade="all" inverse="true"
lazy="true" access="field.pascalcase-underscore">
<key>
<column name="TRAMIT_ID"/>
</key>
<one-to-many class="IntGin.Core.GSIT.Domain.GsHistoricEstats,
IntGin.Core.GSIT.Domain"/>
</set>
Relación de B con A (1 a 1 o many-to-one):
<many-to-one name="Tramit" access="field.pascalcase-underscore"
not-null="true" outer-join="auto" insert="true" update="true">
<column name="TRAMIT_ID"/>
</many-to-one>
2) La misma tabla de Tramit tiene una relación 1 a 1 con otra tabla
llamada GsXML. GsXML tiene el ID de Tramit. Si hago Tramit.Xml = GsXML
me vuelve a dar error de que no puede establecer null en la foreign
key de GsXML con Tramit. Si a GsXML le establezco el Tramit:
GsXML.Tramit = Tramit funciona pero tengo que hacer dos veces Save
Mapeo:
Tramit:
<many-to-one name="Xml" access="field.pascalcase-underscore" not-
null="true" cascade="all" insert="true" update="true" unique="true">
<column name="TRAMIT_ID"/>
</many-to-one>
GsXml:
<many-to-one name="Tramit" access="field.pascalcase-underscore"
not-null="true" outer-join="auto" insert="true" update="true"
cascade="all">
<column name="TRAMIT_ID"/>
</many-to-one>
Por favor, ¿alguien puede ayudarme?
Muchas gracias de antemano
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano