2010-01-28 22 views
5

Tengo un aplicación WPF que utiliza LINQ a SQL en un archivo local .MDF. Esta solución es simple, fácil y eficaz, es decir, creé mi modelo de una vez, a continuación, leer/escribir datos en cualquier lugar a través de LINQ:¿Cuál es el equivalente de LINQ-a-SQL para Silverlight?

 using (var db = Datasource.GetContext()) 
     { 
      oldItem = (from i in db.Infos 
         where i.Id == TheId 
         select i).SingleOrDefault(); 
      CreateForm(db, FormBase, oldItem, Button_Save); 
     } 

¿Cuál es el equivalente de muertos sencilla de esto para aplicaciones de Silverlight?

Buscando encuentro una explosión de términos:

  • WCF RIA Services, Servicios de datos de WCF (ADO.NET Data Services, Astoria), servicios de datos Toolkit
  • .NET RIA Servicios
  • OData (Dallas)
  • GData
  • REST, basada en reposo, reposo similar, REST-inspirado
  • XML, JSON, XML RDF +
  • servicios web, SOA
  • los servicios basados ​​en la nube, Azure, SQL Azure, la plataforma de servicios Azure

Todo lo que quiero hacer es esto:

  • crear un .mdf archivo
  • utilice alguna herramienta LINQ-to-SQL-like a generar una capa de datos habilitada para web (¿RESTO?) etc.
  • FTP el archivo .mdf y clases a mi servicio de alojamiento web ASP.NET
  • escritura clientes Silverlight que leen y escriben a esta fuente de datos con LINQ
+0

+1 para servicios RIA –

+0

+1 buena pregunta –

Respuesta

4

Concentrado en el aprendizaje de los Servicios de datos RIA, o Servicios de datos WCF. Convierte sus consultas LINQ dentro de Silverlight a solicitudes REST y le ahorra escribir parte del código de la infraestructura. La idea es que su aplicación SL se comunica solo a los servicios web, no tiene acceso a la base de datos física, como cuando está utilizando algunos ORM (L2S). En SL, está dentro del entorno limitado del navegador, lo que le impide acceder al sistema de archivos, incluidos los archivos db.
Otro enfoque es escribir servicios web y exponer datos a través de él (GetArticleByID), y luego consume esos servicios de Silverlight. Luego usa LINQ para iterar en los datos cargados y obtenidos.

+1

+1 "RIA and WCF Data Services", sin embargo, la solicitud no es necesariamente REST pero eso no es algo que el desarrollador deba preocuparse demasiado. – AnthonyWJones

+0

el término que hace aparecer los hits más relevantes es "WCF RIA Services", p. http://silverlight.net/getstarted/riaservices/ –

+0

Es difícil mantenerse al día con el cambio de nombre constante de este marco. Hace mucho tiempo estaba Astoria, que es una interfaz estilo REST para datos IQueryable a través de servicios web WCF. Además de eso, construyeron recientemente WCF RIA Services para Silverlight, para permitir el consumo rápido y fácil de Astoria con consultas LINQ (WCF Data Services). Pero, hay algunos conceptos dentro de los Servicios de RIA que realmente no me gustan y me recuerdan al control ASP.NET SqlDataSource dentro del archivo ASPX y la consulta SQL en él. Mantenga su lógica de acceso a los datos en una capa separada ligeramente acoplada, ¡no en un archivo de declaración de UI! –

1

No es posible. Silverlight no puede acceder a las bases de datos directamente. Se requiere algún tipo de capa de servicio web en el medio. Creo que WCF y RIA Services son los más utilizados.

+0

a la derecha, estoy buscando algo que genere esta capa de servicio web para mí, así como LINQ-to-SQL genera la clase de modelo de datos para mí, así que no tengo que pensar en eso, solo "usarlo a través de linq" –

+0

+1 para señalar que quiero generar una capa de servicio web, no clases de modelos de datos, eso cambió. –

3

Esto es lo que hay que hacer -

  1. crear una aplicación Silverlight con Visual Studio.Obtendrá dos proyectos, uno con Silverlight XAML y el otro una aplicación web para alojarlo.

  2. En la aplicación web, agregue el archivo DBML (Linq-2-SQL). Configurar de forma normal

  3. En la aplicación web, añadir un Silverlight habilitada servicio WCF

  4. En el servicio WCF, definir algunos métodos que acceden al contexto de datos L2S

  5. En el proyecto de Silverlight, vaya a agregar servicio de referencia, golpeó "descubrir" y añadir el servicio WCF en

  6. una instancia del servicio, y acceder a sus métodos

Suena un poco complejo, pero bastante directo en la práctica.

+1

+1 este es el tipo de consejo de camino a través de la selva que estoy buscando, lo intentaré –

+0

Déjame saber cómo funciona, feliz de ofrecer más consejos.He hecho este tipo de cosas de Silverlight a linq algunas veces ... –

+0

en el paso 3 cuando agrego un servicio wcf habilitado para Silverlight a la aplicación web, obtengo "Referencia de objeto no configurada para una instancia de objeto ", aunque parece crear el servicio, ¿algún consejo allí? –

1

no te recomiendo que borre una hora en su horario y simplemente ver el vídeo: -
net-ria-services-intro

De hecho claras 2 horas y el trabajo al lado del vídeo construcción de su propia copia de la aplicación en construcción .

1

Si desea desarrollar una aplicación LOB (línea de negocios) normal, debe seguir el enfoque utilizando una interfaz de servicio web para su base de datos. Los servicios RIA o el servicio de datos WCF es la tecnología actual de RAD (desarrollo rápido de aplicaciones) de Microsoft para facilitar esta tarea.

Si está hablando de un escenario especial que necesita: Silverlight 4 cuando se está quedando sin navegador puede hablar ahora con los servidores COM en Windows. Hablar de las bases de datos se describe en esta gran publicación de blog: Cutting Edge Silverlight 4 Com Features.

Si está buscando una forma de manipular archivos de base de datos, puede echar un vistazo al proyecto csharp-sqlite. Creo que se compila para Silverlight sin mucho preámbulo (prueba rápida y sucia de concepto aquí: Proof of Concept csharp-sqlite in Silverlight). Con él, puede crear y manipular un archivo de base de datos en el almacenamiento de archivos aislado del usuario en una aplicación regular de Silverlight y luego cargarlo donde desee.

+0

+1 para la idea de ejecutar una base de datos sqlite en el almacenamiento aislado de los usuarios, inteligente –

+0

aquí hay un artículo que describe sqlite en silverlight: http://www.itwriting.com/blog/1695-proof-of-concept-c-sqlite -running-in-silverlight.html –

Cuestiones relacionadas