3ENGINE

Programación y otros cachivaches

Categoría: Tecnologia

Página 37/45

Tecnologia

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.




Tecnologia

Cómo habilitar .dbml de LINQ para WCF


Vale, de acuerdo es una «»tonteria»» pero una tonteria que me ha hecho perder unas cuantas horas. Si utilizas LINQ y requieres que un método WCF marcado con atributo [OperationContract] devuelva una clase de un fichero .dbml necesitas que se serialize correctamente para viajar al cliente correctamente, para ello necesitas poner Serialization mode = unidirectional




Tecnologia

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, porque.NET no permite realizar LINQ dinámico. Para solucionarlo existe una librería que añadiéndola a tu proyecto podrás hacer cosas como la del ejemplo.
Para descargar la librería y unos ejemplos éste es el enlace o este.

Referencias
Dynamic LINQ(Parte 1: Usando la librería de LINQ Dynamic)




Tecnologia

Atomikframework: un microframework PHP con buena pinta.


AtomikFramework es un pequeño framework para PHP que tiene muy buena pinta y que vale la pena darle una oportunidad. Su autor dice que no utiliza MVC (Model-View-Controller) sino KISS (Keep It Simple Stupid) 😀 . El proyecto está bien documentado cosa que se agradece, y para el pequeño proyecto que tengo en mente es ideal.