3ENGINE  programmer :-)

miércoles 4 de marzo de 2009

MSLinqToSQLGenerator: Unspecified error

Cuando añades una partial class a una clase "Linq to SQL" de LINQ tienes todos los números que en un momento u otro acabe saliendo un error "'MSLinqToSQLGenerator' failed. Unspecified error" ¡incluso aunque tengas instalado el SP1 de Visual Studio 2008!. Gracias a éste enlace pude solucionar el problema.

1º paso: los using debe estar dentro del "namespace". Es decir de esto:


using System.Linq;
using System.Collections.Generic;
using System.Data;

namespace SIRAMcenter.Datos.Plugins
{
partial class PluginInstanceDataContext
{
public IEnumerable<string> GetNombreClasePluginsNoIControl(int idCentro)

debes pasar a esto:

namespace SIRAMcenter.Datos.Plugins
{
using System.Linq;
using System.Collections.Generic;
using System.Data;

partial class PluginInstanceDataContext
{
public IEnumerable<string> GetNombreClasePluginsNoIControl(int idCentro)
{



2º paso: Ejecutar explicitamente la herramienta personalizada(MSLinqToSQLGenerator) de nuevo:




3ºpaso: limpia el proyecto y vuelve a compilar.

Etiquetas: , ,




martes 3 de marzo de 2009

LINQ con WCF: de carga diferida a explícita

LINQ por defecto utiliza la consulta diferida. Cuando "navegamos" entre las clases de un LINQ to SQL (.dbml) éste en background va generando las consultas y de este modo nos ahorramos consultas inutiles.

El problema viene cuando queramos devolver una clase que forma parte de un .dbml como resultado de un método marcado como [OperationContract].

Es necesario modificar el comportamiento por defecto de consulta diferida a una consulta forzada. Ejemplo:


PluginInstanceDataContext pluginsContext = new PluginInstanceDataContext();

var orderloadOption = new System.Data.Linq.DataLoadOptions();
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith(p => p.PluginParametro);
dlo.LoadWith(p => p.PluginTipoControl);
pluginsContext.LoadOptions = dlo;

var consulta = from plugins in pluginsContext.Plugin
where plugins.IdCentro == idCentro
select plugins;


Sino lo hacemos así nos encontraremos que las "clases hijas" no contienen datos.

Etiquetas: , , ,




jueves 19 de febrero de 2009

LINQ Dynamic Query

Si quieres hacer algo como esto en LINQ:


var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London", 10).
OrderBy("CompanyName").
Select("new(CompanyName as Name, Phone)");


lo llevas claro... ya que .NET no permite realizar LINQ dinámico. Para solucionarlo existe una libreria que añadiendola a tu proyecto podras hacer cosas como la del ejemplo.
Para descargar la libreria y unos ejemplos éste es el enlace o este.

Artículo original: Dynamic LINQ(Parte 1: Usando la librería de LINQ Dynamic)

Etiquetas: , ,




miércoles 7 de mayo de 2008

Diseño de consultas en LINQ

En esta dirección podeis encontrar una lista de artículos muy interesantes sobre cómo diseñar consultas LINQ.

Etiquetas:




   

Categorias

Archivos

 
Feed Blog suscríbete!      Contacto     Terminos & Condiciones © 3ENGINE 2007