none
No puedo adjuntar registros hijos en linq RRS feed

  • Pregunta

  •  al principia tenia el error que no mostraba nada malo, para tampo me guardaba nada en la base de datos ni en la tabla padre ni en la tabla hijo, ahora me sale este error

    The best overloaded method match for 'System.Data.Objects.DataClasses.EntityCollection<Rapidstar.FacturaVentasdetalle>.Add(Rapidstar.FacturaVentasdetalle)' has some invalid arguments
    cannot convert from 'Rapidstar.facturaVenta' to C:\RapidStar\Rapidstar

    #region intento en LINQ
                facturaVenta factvent = new facturaVenta  //  Creo Registro Padre 
    	    {
                        fefact =  DateTime.Now,
         		  //factvent.numfact = se crea automaticamente por Identity
    		    codclient = Codclient,
    		    valtotal = Convert.ToDecimal(TotalapagarLabell.Text),
    		  //factvent.estado =  sin determinar
    		    codvendedor = Convert.ToInt32 (Codclient),
             	    valrecibido =  Valrecibido,
            	    valcambio = Valcambio
    	     };
                FacturaVentasdetalle factdetal;  ////  Creo Registro hijo
                foreach (DataRow r in DtventasdetalleVisualizacion.Rows)
                {
                    factdetal = new FacturaVentasdetalle();
                    foreach (DataColumn dc in DtventasdetalleVisualizacion.Columns)
                    {
                        {
                            factdetal.cant = r["Cantidad"].GetHashCode();
                            factdetal.valor = r["Valor"].GetHashCode();
                            factdetal.codbar = r["codigobar"].ToString();
                            factdetal.numreg = Guid.NewGuid();
                        }
                    }
                    factvent.FacturaVentasdetalles.Add(factdetal); 
                }
                try
                {
                    //Guardamos cambios
                    
                    DBstar.SaveChanges();
                    MessageBox.Show("Gracias. Por Su Compra"); 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }



    Carlos Jose Gonzalez Arenas

    martes, 17 de julio de 2012 18:56

Respuestas

  •  

    Añadi algo que me habia olvidado, Justo antes del savechanges()

    DBstar.AddTofacturaVentas(factvent).

    pero me sale el error ahora 

    An error occurred while updating the entries. See the inner exception for details.

    facturaVenta factvent = new facturaVenta  //  Creo Registro Padre 
    {
                        fefact =  DateTime.Now,
    //factvent.numfact = se crea automaticamente por Identity
    codclient = Codclient,
    valtotal = Convert.ToDecimal(TotalapagarLabell.Text),
    //factvent.estado =  sin determinar
    codvendedor = Convert.ToInt32 (Codclient),
    valrecibido =  Valrecibido,
    valcambio = Valcambio
    };
                FacturaVentasdetalle factdetal;  ////  Creo Registro hijo
                foreach (DataRow r in DtventasdetalleVisualizacion.Rows)
                {
                    factdetal = new FacturaVentasdetalle();
                    foreach (DataColumn dc in DtventasdetalleVisualizacion.Columns)
                    {

                        {
                            factdetal.cant = r["Cantidad"].GetHashCode();
                            factdetal.valor = r["Valor"].GetHashCode();
                            factdetal.codbar = r["codigobar"].ToString();
                            factdetal.numreg = Guid.NewGuid();
                        }
                    }
                    factvent.FacturaVentasdetalles.Add(factdetal); 
                }
                try
                {
                    //Guardamos cambios
                    DBstar.AddTofacturaVentas(factvent);  *** acá añadí esto.que había olvidado****
                    DBstar.SaveChanges();
                    MessageBox.Show("Gracias. Por Su Compra"); 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

         

    Carlos Jose Gonzalez Arenas

    • Marcado como respuesta makaco10 miércoles, 18 de julio de 2012 23:25
    miércoles, 18 de julio de 2012 21:02

Todas las respuestas

  • hola

    este error lo da al compilar o en ejecucion ?

    has valdiado el Add() que parametro espera, valida ademas que la clase FacturaVentasdetalle  sea la que genero EF

    que no sea una que tu hayas creado bajo otro namespace

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 17 de julio de 2012 21:20
  • lo probe hoy nuevamente y no da error, pero tampoco cumple la tarea, no guarda nada en tabla padre FacturaVenta ni tampoco en FacturaVentasdetalle, y el parametro que espera add() es FacturaVentadetalle Entity


    Carlos Jose Gonzalez Arenas

    miércoles, 18 de julio de 2012 12:03
  •  

    Añadi algo que me habia olvidado, Justo antes del savechanges()

    DBstar.AddTofacturaVentas(factvent).

    pero me sale el error ahora 

    An error occurred while updating the entries. See the inner exception for details.

    facturaVenta factvent = new facturaVenta  //  Creo Registro Padre 
    {
                        fefact =  DateTime.Now,
    //factvent.numfact = se crea automaticamente por Identity
    codclient = Codclient,
    valtotal = Convert.ToDecimal(TotalapagarLabell.Text),
    //factvent.estado =  sin determinar
    codvendedor = Convert.ToInt32 (Codclient),
    valrecibido =  Valrecibido,
    valcambio = Valcambio
    };
                FacturaVentasdetalle factdetal;  ////  Creo Registro hijo
                foreach (DataRow r in DtventasdetalleVisualizacion.Rows)
                {
                    factdetal = new FacturaVentasdetalle();
                    foreach (DataColumn dc in DtventasdetalleVisualizacion.Columns)
                    {

                        {
                            factdetal.cant = r["Cantidad"].GetHashCode();
                            factdetal.valor = r["Valor"].GetHashCode();
                            factdetal.codbar = r["codigobar"].ToString();
                            factdetal.numreg = Guid.NewGuid();
                        }
                    }
                    factvent.FacturaVentasdetalles.Add(factdetal); 
                }
                try
                {
                    //Guardamos cambios
                    DBstar.AddTofacturaVentas(factvent);  *** acá añadí esto.que había olvidado****
                    DBstar.SaveChanges();
                    MessageBox.Show("Gracias. Por Su Compra"); 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

         

    Carlos Jose Gonzalez Arenas

    • Marcado como respuesta makaco10 miércoles, 18 de julio de 2012 23:25
    miércoles, 18 de julio de 2012 21:02
  • ¿Y si miras el InnerException que mensaje tienes?

    Puedes probar algo así 

    catch (Exception ex)
    {
      MessageBox.Show(ex.Message);
      if (ex.InnerException != null)
        MessageBox.Show(ex.InnerException.Message);
    }
    Las dos últimas líneas las puedes quitar cuando todo esté funcionando.


    Atentamente, Sergio.

    Blog
    Twitter

    jueves, 19 de julio de 2012 8:01