elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Error al acceder a base de datos - C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error al acceder a base de datos - C#  (Leído 2,670 veces)
ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Error al acceder a base de datos - C#
« en: 23 Enero 2015, 10:43 am »

Hola a todos.
He puesto la misma duda en el foro de Base de Datos pero ahora dudo si deberia estar ahi o aqui.
Os comento, estoy programando una aplicacion HMI para el control de un automata y a la hora de acceder a la base de datos el programa se me para y me salta el siguiente error.

Citar
Se produjo una excepción de tipo 'System.NotSupportedException' en EntityFramework.dll
pero no se controló en el código del usuario

Información adicional:
Citar
Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery, DbRawSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList(). For ASP.NET WebForms you can bind to the result of calling ToList() on the query or use Model Binding, for more information see"

El codigo es el siguiente:
Código
  1. private MainWindow mainWindow;
  2. private basedatosEntities bbdd;
  3. private element producto;
  4.  
  5. public PageSeleccion()
  6. {
  7. InitializeComponent();
  8. bbdd = DataBaseFactory.GetbasedatosDatabaseEntities();
  9. this.productoList.ItemsSource = bbdd.element; <----- Aqui me salta el error
  10. this.producto = null;
  11. }



basedatos es mi base de datos y element es una tabla de la base.

Me gustaria que me ayudarais a resolver este problema.

Gracias.



[MOD]: Usa las etiquetas adecuadas para insertar código o citas.


« Última modificación: 23 Enero 2015, 16:06 pm por Eleкtro » En línea

ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Error al acceder a base de datos - C#
« Respuesta #1 en: 24 Enero 2015, 12:05 pm »

Perdoname, pensaba que las habia puesto pero me equivoque. Tal y como esta ahora es correcto no ?

Edit: El proyecto usa una version de .NET Framework de destino 4.5.1 no se si estara relacionado con el problema


« Última modificación: 24 Enero 2015, 12:34 pm por ikkaku » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: Error al acceder a base de datos - C#
« Respuesta #2 en: 24 Enero 2015, 13:34 pm »

Hola

No tiene nada que ver con la versión objetivo de .Net Framework, en la información que has mostrado, el error se explica por si mismo, y también la solución :P

No puedes enlazar los datos de la query directamente, así que debes generar una colección local.

Prueba una de estas simples modificaciones dependiendo de la tecnología que estés usando (WinForms / WPF / ASP.Net, como se especifica en el error de arriba):
Código
  1. this.productoList.ItemsSource = bbdd.element.ToList;
Código
  1. this.productoList.ItemsSource = bbdd.element.ToBindingList;

o tal vez:
Código
  1. this.productoList.ItemsSource = (from item in bbdd select).ToList();

Saludos
« Última modificación: 24 Enero 2015, 13:42 pm por Eleкtro » En línea


ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Error al acceder a base de datos - C#
« Respuesta #3 en: 26 Enero 2015, 08:47 am »

Pero en cambio en otro programa similar que tengo con las mismas lineas de codigo no me salta ningun error y hace lo que deberia hacer.

Código
  1. database = DataBaseFactory.GetlantaDatabaseEntities();
  2. this.productoList.ItemsSource = database.producto;
  3.  


Código
  1.  private void ButtonNewProductClick(object sender, System.Windows.RoutedEventArgs e)
  2.        {
  3.  
  4.  
  5.            ObjectSet<producto> listProd = (ObjectSet<producto>) this.productoList.ItemsSource;
  6.            producto prod = listProd.CreateObject();
  7.            prod.imagen = null;
  8.            prod.mosaico = null;
  9.            prod.id_producto = -1;
  10.  
  11.            if (selectedProduct != null)
  12.            {
  13.                prod.alto = selectedProduct.alto;
  14.                prod.ancho = selectedProduct.ancho;
  15.                prod.largo = selectedProduct.largo;
  16.            }
  17.            else
  18.            {
  19.                prod.alto = Systema.MIN_L;
  20.                prod.ancho = Systema.MIN_L;
  21.                prod.largo = Systema.MIN_L;
  22.            }
  23.  
  24.            //obtengo un nombre unico
  25.            String nombre = "PRODUCTO";
  26.            int i=0;
  27.            foreach (producto p in listProd)
  28.            {
  29.                try
  30.                {
  31.                    int aux = int.Parse(p.nombre.Substring(8));
  32.                    if (i <= aux)
  33.                    {
  34.                        i = aux + 1;
  35.                    }
  36.                }
  37.                catch (Exception)
  38.                { }
  39.  
  40.                if (String.CompareOrdinal(p.nombre.ToUpper(), (nombre + i)) == 0)
  41.                {
  42.                    i++;
  43.                }
  44.            }
  45.  
  46.  
  47.            prod.nombre = nombre + i;
  48.            listProd.AddObject(prod);            
  49.            database.SaveChanges();
  50.  
  51.            database = DataBaseFactory.GetUpdatedlantaDatabaseEntities();
  52.            this.productoList.ItemsSource = database.producto;
  53.  
  54.  
  55.  
  56.            selectedProduct = prod;            
  57.            this.mosaicoList.ItemsSource = selectedProduct.mosaico;
  58.            this.selectedMosaico = null;
  59.  
  60.            this.productoNombre.Text = selectedProduct.nombre;
  61.            this.alto.Text = selectedProduct.alto.ToString();
  62.            this.ancho.Text = selectedProduct.ancho.ToString();
  63.            this.largo.Text = selectedProduct.largo.ToString();
  64.  
  65.            this.sliderAlto.Value = selectedProduct.alto;
  66.            this.sliderAncho.Value = selectedProduct.ancho;
  67.            this.sliderLargo.Value = selectedProduct.largo;

Ese codigo es para crear nuevos elementos en la base de datos y que aparezcan en un DataGrid y es lo que quiero hacer en el nuevo codigo.

Esta es la parte de crear un nuevo producto del nuevo codido:

Código
  1.        private void ButtonNewProductClick(object sender, RoutedEventArgs e)
  2.        {
  3.            ObjectSet<element> listProd = (ObjectSet<element>) this.productoList.ItemsSource;
  4.        }
  5.  

En esa linea si pongo el acceso a la coleccion como .ToList() me dice lo siguiente:

Citar
Información adicional: No se puede convertir un objeto de tipo 'System.Collections.Generic.List`1[HMI_2.element]' al tipo 'System.Data.Objects.ObjectSet`1[HMI_2.element]'

Edit: Acabo de ver que el primer codigo ,el que funciona, tiene esta linea en el .XAML dentro de Page.Resources no se si tendra que ver:
Código
  1. <CollectionViewSource x:Key="productoViewSource" d:DesignSource="{d:DesignInstance my:producto, CreateList=True}" />
« Última modificación: 26 Enero 2015, 10:30 am por ikkaku » En línea

ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Error al acceder a base de datos - C#
« Respuesta #4 en: 30 Enero 2015, 16:06 pm »

Una ayudita ??  :( :(
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No puedo acceder a una base de datos Mysql con php
PHP
arielbuo 6 2,863 Último mensaje 4 Marzo 2009, 23:49 pm
por Mr. Crowley
Problema al acceder a la base de datos: SQLserver y c#
.NET (C#, VB.NET, ASP)
Hartigan 2 2,055 Último mensaje 11 Junio 2010, 02:40 am
por Hartigan
como acceder a una base de datos online
PHP
josco 2 3,336 Último mensaje 29 Octubre 2012, 01:22 am
por josco
Acceder a una base de datos SQL Server con proxy?
Dudas Generales
Spectatorem 4 1,675 Último mensaje 2 Julio 2015, 06:35 am
por Spectatorem
No puedo acceder a mi base de datos online
PHP
adelazeroth 0 956 Último mensaje 5 Septiembre 2017, 20:58 pm
por adelazeroth
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines