none
No se puede agregar una referencia a System.Data.dll RRS feed

  • Pregunta

  • Será que alguien me pueda orientar??

    Estoy utilizando Visual Studio Professional 2012, y un proyecto de tipo Aplicación de Silverlight 5 con Framework 4.5

    estoy intentando utilizar:

    // crear la tabla 
                System.Data.DataTable table = new System.Data.DataTable();
                table.Columns.Add("ID");
                table.Columns.Add("Nombre");
                table.Columns.Add("Apellidos");
                table.Columns.Add("Edad");

    y me marca: "El tipo o el nombre del espacio de nombres 'Data' no existe en el espacio de nombres 'System'(¿falta una referencia de ensamblado?)"

    así que intento agregar a mi proyecto la referencia a System.Data.dll, y no me la agrega me marca:

    "No se puede agregar una referencia a System.Data.dll, ya que no se generó en el tiempo de ejecución de Silverlight. Los proyectos de Silverlight solo funcionarán con ensamblados de Silverlight."

    Qué es lo que debería hacer??


    cyndyrdz

    martes, 3 de diciembre de 2013 18:37

Respuestas

  • No, System.Data.DataTable no existe en Silverlight. Tendrías que usar clases propias (tales como un List<MiClase>) o Entity Framework para encapsular tus datos. Si no quieres hacer muchos cambios en tu código una alternativa sería descargar y utilizar este proyecto de CodePlex:

    http://slbindabledatagrid.codeplex.com/

    Es un DataGrid "bindeable" para Silverlight que incluye dentro del mismo proyecto unas clases que simulan el DataSet y el DataTable. Yo personalmente no lo he probado, pero he oído hablar de él como solución alternativa para adaptar programas antiguos de forma que funcionen en Silverlight. Para programas nuevos es preferible evitar System.Data y usar abstracciones de datos más modernas.

    martes, 3 de diciembre de 2013 18:43

Todas las respuestas

  • No, System.Data.DataTable no existe en Silverlight. Tendrías que usar clases propias (tales como un List<MiClase>) o Entity Framework para encapsular tus datos. Si no quieres hacer muchos cambios en tu código una alternativa sería descargar y utilizar este proyecto de CodePlex:

    http://slbindabledatagrid.codeplex.com/

    Es un DataGrid "bindeable" para Silverlight que incluye dentro del mismo proyecto unas clases que simulan el DataSet y el DataTable. Yo personalmente no lo he probado, pero he oído hablar de él como solución alternativa para adaptar programas antiguos de forma que funcionen en Silverlight. Para programas nuevos es preferible evitar System.Data y usar abstracciones de datos más modernas.

    martes, 3 de diciembre de 2013 18:43
  • OK, muchas gracias Alberto, voy a revisar lo que me envías, esto me lleva entonces a otra pregunta, si mi proyecto es de tipo Aplicación de Silverlight, y se va a utilizar únicamente dentro de la empresa, a través de la Intranet, y tengo una base de datos SQL en un servidor, cómo debería hacer el acceso a la BD para consultar y actualizar información en ella??

    Saludos y muchas gracias


    cyndyrdz

    martes, 3 de diciembre de 2013 19:46
  • Dado que la aplicación Silverlight va a quedar aislada dentro del browser y que normalmente no tendrá acceso directo al servidor de base de datos, en general esta comunicación se hace mediante servicios web ubicados en el mismo servidor que sirve a los PCs la aplicación Silverlight. En el servidor se crea un servicio web (normalmente usando WCF si se trata de una aplicación nueva). Dentro del servicio web, se accede a la base de datos usando cualquier tecnología que resulte apropiada, típicamente Entity Framework. Y desde la aplicación Silverlight se añade una Referencia al Servicio, con lo que automáticamente se genera un "proxy" local para invocar desde la aplicación Silverlight a los métodos del servidor que traen la información desde la base de datos.

    martes, 3 de diciembre de 2013 20:03
  • Perfecto muchas gracias, entonces hago los Servicios WCF habilitados para Silverlight, ya hice un pequeño ejemplo para llenar un datagrid, utilizando un tutorial, en donde resumiendo más o menos hice:

    1ro. Definimos el contexto de datos: en la ventana Explorador de servidores, clic derecho en el nodo
    Conexiones de datos y seleccionaremos la opción Agregar conexión

    2do. En la ventana Explorador de soluciones, en el proyecto Web, definimos el contexto de datos basado en LINQ. Entre las diferentes variantes que LINQ ofrece para la obtención y manipulación de datos se encuentra LINQ to Classes, que está especialmente diseñada para interactuar con bases de datos SQL Server.

    3ro. Pulsar Agregar para confirmar el anterior cuadro de diálogo, abriéndose a continuación el diseñador correspondiente al contexto de datos. Sobre este diseñador arrastraremos -desde la conexión creada en
    el Explorador de servidores- las tablas con las que vamos a trabajar

    4to. Crear el Servicio Web, editar la Interfase del Servicio, con interfaces para cada tabla que vamos a utilizar, y desarrollar los métodos para cada una de ellas.

    Si tu tienes algún ejemplo o liga que me recomiendes para implementar todo esto de la forma más correcta, te agradeceré mucho que me la compartas, este ejemplo era solo para alimentar los datos de un par de tablas en un datagrid, yo voy a tener que hacer algo para todas las tablas de mi base de datos, los típicos ABC's para los catálogos, consultas, reportes, etc.

    Otra vez muchísimas gracias por tu valiosa ayuda. Saludos


    cyndyrdz

    martes, 3 de diciembre de 2013 21:48