Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: ikkaku en 9 Febrero 2015, 10:24 am



Título: Referencia a objeto no definida como instancia de un objeto - [C#]
Publicado por: ikkaku en 9 Febrero 2015, 10:24 am
Hola a todos.
Como ya puse en otro tema estoy intentando añadir elementos a una base de datos desde un ListBox en VS pero el problema que tengo ahora es que cada vez que intento crearlo me salta este error.
Código
  1. private void Page_Loaded(object sender, RoutedEventArgs e)
  2.        {
  3.            database = new surplastikEntities();
  4.            elementList.ItemsSource = database.element.ToList();
  5.  
  6.            mainWindow = (MainWindow) Window.GetWindow(this);
  7.            mainWindow.SetVisibilidadBoton("botonVolver", Visibility.Visible);
  8.            mainWindow.SetTitle("Productos");
  9.        }


Este es el codigo de la carga de la pagina.

Código
  1. private void ButtonNewProductClick(object sender, System.Windows.RoutedEventArgs e)
  2.        {
  3.            element selected = (element) elementList.SelectedItem;
  4.            element newElement = new element();
  5.  
  6.            newElement.reference_code = "Nueva elemento";
  7.            if (selected != null)
  8.            {
  9.                newElement.large_x = selected.large_x;
  10.                newElement.bulk_code = selected.bulk_code;
  11.                newElement.width_y = selected.width_y;
  12.                newElement.hight_z = selected.hight_z;
  13.  
  14.                newElement.reference_code = selected.reference_code;
  15.            }
  16.            else
  17.            {
  18.                newElement.large_x = 0;
  19.                newElement.bulk_code = "0";
  20.                newElement.width_y = 0;
  21.                newElement.hight_z = 0;
  22.  
  23.                newElement.reference_code = "0";
  24.            }
  25.            database.element.Add(newElement); //<------ERROR AQUI
  26.  
  27.            database.SaveChanges();
  28.            database = new Entities();
  29.            elementList.ItemsSource = database.element.ToList();
  30.  
  31.  
  32.        }

Esa es la accion de mi boton nuevo elemento y la linea donde me da el error. He intentado ponerlo antes de darle los valores y despues de darselos pero el resultado es el mismo.

Agradezco su atencion.

Un saludo

Edit: He probado a meter una linea asi
Código
  1. if (newElement == null)
  2.                MessageBox.Show("NUEVO ELEMENTO NULO");
para ver si el elemento que acabo de crear es nulo y nunca me salta asi que doy por hecho que tiene que ser algo relacionado con la base de datos o su instanciacion.


Título: Re: Referencia a objeto no definida como instancia de un objeto - [C#]
Publicado por: Eleкtro en 11 Febrero 2015, 14:39 pm
Código
  1.        {
  2.        ...
  3.            element newElement = new element();
  4.        ...
  5.            database.element.Add(newElement); //<------ERROR AQUI
  6.        }

Edit: He probado a meter una linea asi
Código
  1. if (newElement == null)
  2.                MessageBox.Show("NUEVO ELEMENTO NULO");
para ver si el elemento que acabo de crear es nulo y nunca me salta asi que doy por hecho que tiene que ser algo relacionado con la base de datos o su instanciacion.

El 'MessageBox' nunca se muestra porque es imposible que el objeto 'newElement' sea nulo, ya que siempre estás inicializando el objeto al principio del bloque con el constructor.

Lo que tienes que hacer es inicializar la colección 'database.element' antes de intentar agregar un item a dicha colección, ya que al ser nula, te salta una excepción de referencia a objeto nulo, el error te está indicando que estás intentando utilizar un objeto que no ha sido inicializado, por ende, si no es el objeto  'newElement ', es la lista 'database.element' o también podría ser el objeto 'database', realiza la misma prueba del 'MessageBox' con ambos objetos.

Saludos!