3 messaggi dal 10 agosto 2006
Salve a tutti,
ho un problema con Nhibernate.
Ho due tabelle i cui campi sono deducibili dai seguenti file di mapping.
Vorrei salvare/inserire i dati delle due tabelle in un colpo solo ma non ci riesco.

Tabella Persona

<class name="Persona" table="Persona">
<id name="IDPersona" type="Int64" column="IDPersona" unsaved-value="0">
<generator class="identity">
<param name="property">Impiegato</param>
</generator>
</id>
<property name="NomePersona" length="250"/>
<one-to-one name="Impiegato" class="Impiegato" property-ref="IDPersona" />
</class>


Tabella Impiegato

<class name="Impiegato" table="Impiegato">
<id name="IDImpiegato" type="Int64" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="IDPersona" type="Int64"/>
<property name="IDFunzione" type="Int64"/>
<property name="Data_assunzione" type="DateTime"/>
<property name="Data_licenziamento" type="DateTime"/>
</class>


La classe relativa a Persona è fatta così:

public class Persona
{

private long m_IDPersona;
private string m_NomePersona;
private Impiegato m_Impiegato;

public long IDPersona
{
get
{
return m_IDPersona;
}
set
{
m_IDPersona = value;
}
}

public string NomePersona
{
get
{
return m_NomePersona;
}
set
{
m_NomePersona = value;
}
}

public Impiegato impiegato
{
get
{
return m_Impiegato;
}
set
{
m_Impiegato = value;
}
}

public Persona ()
{

}

L'istruzione che vorrei usare è la seguente:
session.Save(persona);
però mi dà errore perché il campo IDPersona di Impiegato non viene valorizzato (mi aspetterei che fosse Nhibernate a valorizzarlo).

Dunque mi rimane di effettuare l'inserimento con due istruzioni:
session.Save(persona); mi faccio restituire l'IDPersona, valorizzo l'IDPersona di Impiegato e quindi faccio
session.Save(Impiegato);

Qualcuno mi sa dire come devo modificare il file di mapping?

Grazie
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Hai provato a dare un'occhiata alla documentazione NH 1.0.2, capitolo 18.2. Author/Work relativamente agli oggetti Author e Person? Forse puoi trovare la soluzione.

Ciao.

.:. Marcello Rutter .:.
3 messaggi dal 10 agosto 2006
Grazie per il suggerimento.
Esiste purtroppo una differenza tra l'esempio riportato nella documentazione di NH e il mio problema.
Infatti in entrambi gli oggetti Author/Work id è la primary key, invece nel mio caso IDPersona è primary key nell'oggetto Persona mentre è una foreign key nell'oggetto Impegato.
In pratica non posso scrivere per IDPersona
<generator class="assigned"/>
poichè esso è un contatore nella tabella Persona.
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.