SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: kurosawazero en Sábado 19 de Noviembre de 2016, 10:54
-
hola buenas soy nuevo con c# y tengo problemas con un ejercicio con db4o
tengo una clase persona
public class Persona
{
public virtual string Rut
{
get;
set;
}
public virtual int Dv
{
get;
set;
}
public virtual string Nombre
{
get;
set;
}
public virtual string ApellidoP
{
get;
set;
}
public virtual string ApellidoM
{
get;
set;
}
public List<Direccion> Direcciones { get; set; }
}
y tengo una clase direcciones
public class Direccion
{
public int Numero
{
get;
set;
}
public string Calle
{
get;
set;
}
public string Comuna
{
get;
set;
}
public string Region
{
get;
set;
}
}
y un formulario con textbox para el ingreso de datos y un boton guardar
con este codigo
private void cmdAgregarPN_Click(object sender, EventArgs e)
{
IObjectContainer db = Db4oFactory.OpenFile(@"bd.yap");
PersonaN P = new PersonaN();
P.Nombre = txtNombre.Text;
P.ApellidoP = txtApellidoP.Text;
P.ApellidoM = txtApellidoM.Text;
P.Rut = txtRut.Text;
P.Dv = Convert.ToInt32(txtDv.Text);
P.Direcciones[0].Region = txtRegion.Text;
P.Direcciones[0].Comuna = txtComuna.Text;
P.Direcciones[0].Calle = txtCalle.Text;
P.Direcciones[0].Numero = Convert.ToInt32(txtNumero.Text);
try
{
db.Store(P);
db.Commit();
}
catch (Exception ex)
{
throw;
}
finally
{
db.Close();
}
MessageBox.Show("Persona Guardada");
txtNombre.Clear();
txtApellidoP.Clear();
txtApellidoM.Clear();
txtRut.Clear();
txtDv.Clear();
txtRegion.Clear();
txtComuna.Clear();
txtCalle.Clear();
txtNumero.Clear();
}
}
cuando inicio la aplicacion lleno las cajas de texto y al darle al boton agregar me sale el error de la imagen
si reviso los demas parametros como nombre apellido si logran capturar el valor pero al llegar a la parte de direcciones muere
de ante mano muchas gracias por la ayuda
saludos
-
bueno al final encontre solucion para mi problema y trabaje asi el codigo
private void cmdAgregarPN_Click(object sender, EventArgs e)
{
IObjectContainer db = Db4oFactory.OpenFile(@"bd.yap");
PersonaN P = new PersonaN();
P.Direcciones = new List<Direccion>();
P.Nombre = txtNombre.Text;
P.ApellidoP = txtApellidoP.Text;
P.ApellidoM = txtApellidoM.Text;
P.Rut = txtRut.Text;
P.Dv = Convert.ToInt32(txtDv.Text);
P.Direcciones.Add(new Direccion() {Region= txtRegion.Text,Comuna=txtComuna.Text, Calle = txtCalle.Text, Numero = Convert.ToInt32(txtNumero.Text) });
try
{
db.Store(P);
db.Commit();
}
catch (Exception ex)
{
throw;
}
finally
{
db.Close();
}
MessageBox.Show("Persona Guardada");
txtNombre.Clear();
txtApellidoP.Clear();
txtApellidoM.Clear();
txtRut.Clear();
txtDv.Clear();
txtRegion.Clear();
txtComuna.Clear();
txtCalle.Clear();
txtNumero.Clear();
}
}
pero ahora tengo otra duda
si tubiese una clase mas por ejemplo "tipodireccion" y en direccion tuviese public virtual List<tipodireccion> tiposdireccion
como hago para llegar a ella a traves de la clase persona?