Bien Fabio, probé con lo que me dijiste, pero no funciona, sigo con el
mismo error.
Aquí están mis nuevos mapping:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-
lazy="false">
<class name="dataAccess.csfiles.datospersonalesygrupo.IdentName,
dataAccess" table="identname">
<id name="IdName" column="idname" type="Int32">
<generator class="identity" />
</id>
<property name="Name" column="name" type="String"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-
lazy="false">
<class name="dataAccess.csfiles.datospersonalesygrupo.MemberData,
dataAccess" table="datospersonales">
<id name="IdPersonales" column="idpersonales" type="Int32">
<generator class="identity" />
</id>
<bag name="Idents" table="idents">
<key column="idpersonales" />
<composite-element
class="dataAccess.csfiles.datospersonalesygrupo.Ident, dataAccess">
<property name="Number" column="number" type="String"/>
<property name="Place" column="place" type="String"/>
<property name="Date" column="date"/>
<many-to-one name="Name" cascade="save-update"
class="dataAccess.csfiles.datospersonalesygrupo.IdentName,
dataAccess"
column="idname"/>
</composite-element>
</bag>
</class>
</hibernate-mapping>
Aquí lo salvo:
public void saveIdentName(IdentName identName) {
if (!session.IsConnected)
session.Reconnect();
ITransaction transaction = null;
try
{
transaction = session.BeginTransaction();
session.SaveOrUpdate(identName);
transaction.Commit();
session.Disconnect();
}
catch (Exception e)
{
transaction.Rollback();
session.Disconnect();
throw e;
}
}
Y aquí construyo el objeto:
IdentName identName = new IdentName();
identName.Name = (string)r["Documento"];
Controlador.Instance.saveIdentName(identName);
Esto me tiene totalmente desconcertado. ¿Qué hago?
On 5 feb, 16:45, Fabio Maulo <[EMAIL PROTECTED]> wrote:
> Chili escribió:> Extraído de la documentación de referencia de NHibernate:
>
> >> For databases which support identity columns (DB2, MySQL, Sybase, MS SQL),
> >> you may use identity key generation. For databases that support sequences
> >> >(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you may use sequence
> >> style key generation. Both these strategies require two SQL queries to
> >> insert a >new object.
>
> > A qué dos instrucciones SQL para la inserción se refiere?
>
> Se refiere a que NH genera dos SQL; la primera para conocer el Id y la
> segunda para el INSERT de nuevo record.
> No te falta nada.
> Tal vez hay algo demás.
> 1) saca el usaved-value
> 2) No hagas absolutamente nada con el Id (no lo asignes); deja que se
> ocupe NH de hacer lo que corresponde. Si necesitas conocer el Id es
> suficiente que lea la propiedad despues del Save.
>
> Una aclaración:
> El metodo SaveOrUpdate usa el valor del Id para saber si la instancia es
> nueva o tiene que ser actualizada; vos no te preocupes que NH lo hace
> bien y lo hace solo (ya que estas usando Id y no claves compuestas).
>
> Chau.
> Fabio.
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---