Que tal people

traigo uno de tantos lios...

segun he leido es casi sino que es obligatorio que el ID tiene que ser
generado obligatoriamente por NH en el mapeo de la clase

y digo esto porque al momento de hacer la relacion por medio de
IList<>, y tratar de guardar me sale un error de null, o de que un
entero o string no se puede convertir en IList<>

es por ello que recurro a ustedes, les platico la logica del asunto.

tengo 2 tablas: Alumno y Contabilidad

La tabla Alumno, es una tabla precargada de un archivo excel, los
datos aqui no se incrementaran ya que es de solo lectura, para
realizar consulta, la tabla contiene los siguientes campos

Matricula <-- campo clave
Paterno
Materno
Nombre

La tabla Contabilidad, es una tabla donde se capturaran los datos
contables de un Alumno, tales como

NoCuenta <-- campo clave
NoJE
Hora
Importe
MatriculaAlumno <-- campo que se conecta con la tabla Alumno / en el
campo Matricula

la clase Alumno queda de esta manera

public virtual string Matricula ( get; set; )
public virtual string Paterno ( get; set; )
public virtual string Materno ( get; set; )
public virtual string Nombre ( get; set; )
public virtual IList<Contabilidad> Cuenta ( get; set; )

el archivo Alumno.hbm.xml queda asi
<class name="Alumno">
<id name="Matricula" />
<property name="Paterno" />
<property name="Materno" />
<property name="Name" />
<bag name="Contabilidad">
<key column="MatriculaAlumno" />
<one-to-many class="Contabilidad" />
</bag>
</class>


la clase Contabilidad queda asi
public virtual int NoCuenta ( get; set; )
public virtual int NoJE ( get; set; )
public virtual int Hora ( get; set; )
public virtual int Importe ( get; set; )
public virtual IList<Alumno> MatriculaAlumno ( get; set; )

<class name="Contabilidad">
<id name="NoCuenta" />
<property name="NoJE" />
<property name="Hora" />
<property name="Importe" />
<many-to-one class="Alumno" Column="MatriculaAlumno" />
</bag>
</class>

Cabe mencionar que tanto las clases como los xml los tengo bien
desarrollados, ahorita tal ves omiti datos, porque los estoy
escribiendo a patin

omitiendo los datos de conexion - repositorios y demas, que tambien
estan bien, ya que si logro que guarde en una tabla, solo trato de
simplificar para que vean mi dolor de cabeza

en la winform estoy capturando los datos de esta manera

Alumno alu = new Alumno();
alu.Matricula = "1";
alu.Paterno = "fulano";
alu.Materno = "mengano";
alu.Nombre = "sultano";

Contabilidad cta = new Contabilidad();
cta.NoCuenta = 23456789;
cta.NoJE = 4567890;
cta.Hora = 20;
cta.Importe = 4599;

alu.Contabilidad.add(cta); <--- esta linea es la que me causa el
problema

trate de cambiar la manera de capturar la Matricula directamente de
esta manera
cta.MatriculaAlumno = alu.Matricula
o de esta otra
cta.Matricula = "1";
pero el error es el mismo

se de antemano que todo funcionaria bien si los ID de ambas tablas las
generara automaticamente por NH, pero como les dije me es imposible ya
que la tabla alumno contiene sus datos precargados y a fin de cuentas
la tabla dominante debe ser Alumno

Cualquier dato me sera de gran ayuda, excepto el de que renuncie a mi
vida como programador... me niego xD

De hecho esta necedad de usar NH es porke kiero aprender, nada me
costaria terminar todo de la vieja forma, pero no me gusta

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a