Lazy Loading en Entity Framework C# .NET utilizando Proxies

El Lazy Loading o carga diferida es una técnica con la cual solo tendrás el recurso cuando lo necesites, es decir, la carga de información se hará solo al momento que vayas a hacer uso de ella.

El Lazy Loading o carga diferida es una técnica con la cual solo tendrás el recurso cuando lo necesites, es decir, la carga de información se hará solo al momento que vayas a hacer uso de ella.

Al momento de utilizar este concepto en un ORM, por ejemplo Entity Framework, podemos hacer uso de información de una tabla, e ir a información de otra tabla relacionada solo al momento que vayamos a necesitarla.

La ventaja de esto es que no saturamos el servidor con información que muchas veces no vamos a utilizar. Teniendo igual desventaja el tener que hacer consultas extras cada vez que necesitamos un recurso.

El conocer Lazy Loading te dará una alternativa para solucionar casos en particular.

A continuación te muestro como implementar Lazy Loading en Entity Framework en .NET utilizando Proxies.

¿Cómo hacer una base de datos para un sistema de compra de boletos con selección de lugar?

En este video te enseñare como puedes hacer una base de datos para un sistema en el cual compres un boletos y al mismo tiempo selecciones un lugar ya sea de un concierto, un autobús, avión, cine o cualquier otra situación que involucre problemática parecida.

No importa si haces tú base de datos en mysql o Oracle u otro motor, en el video está representada la esencia de la solución.

Descargar base de datos

¿Cómo hacer una base de datos para Carrito de compras en tienda en linea?

En este video te enseñare como puedes diseñar una base de datos para un carrito de compras.

No importa si haces tú base de datos en mysql o Oracle u otro motor, en el video está representada la esencia de la solución.

Descargar base de datos

¿Cómo realizar un join entre 2 base de datos distintas con entity framework y LINQ? C# #linq

No es bueno para el rendimiento hacer este tipo de consultas ya que las tablas están en bases de datos distintas, pero muchas veces es necesario para el hecho de crear un reporte, o cuando se expande un sistema con nueva tecnología y al final el cliente desea un reporte combinado entre sus sistemas viejos y los nuevos, yo les mostrare una manera de poder lograr un join entre dos bases de datos distintas.
El problema es el siguiente(es hipotético no necesariamente es real solo sirve para el ejemplo), tenemos una base de datos (BD1) con las ventas diarias guardadas en una tabla llamada ventas, se nos pide que sea mostrada la venta y a su lado los datos del domicilio de la tienda, pero nos damos cuenta que no contamos con esos datos, esos datos están en una tabla llamada tienda en una base de datos distinta (BD2), entonces necesitamos hacer un join entre las 2 bases de datos, y para hacerlo debemos tomar a consideración lo siguiente:
Debemos evaluar cual tabla tiene menos registros ya que haremos primero la consulta sobre esa tabla primero y esos datos los tendremos en memoria. En este caso la tabla tienda es la que tiene menos datos (una tienda tiene muchas ventas así que el universo es menor por sentido común). Así que primero vamos por las tiendas de la siguiente forma:

//creamos nuestro contexto de la bd2 ya que ahi esta la tabla tienda
var db2= new entitiesTiendaDB();
//obtenemos las tiendas con una consulta simple de linq
var lstTiendas = from d in db2.tiendas.ToList()
                  select d;

Ahora que a tenemos las tiendas, de la siguiente manera hacemos el join con los datos que ya tenemos en la variable lstTienda:


//creamos el contexto de db1 el cual contiene la tabla ventas
var db = new entitiesVentasDB();

//teniendo un viewmodel llamado VentasViewModel el cual tenga solo los campos que necesitamos creamos la consulta
List<VentasViewModel> lst= from d in db.ventas.ToList()
                          //nuestra tienda se une por el campo codigTienda de lstTiendas y por el mismo campo en
                          //la tabla ventas
                          join t in lstTiendas on d.codigoTienda equals t.codidoTienda into un
                          //esto hace que sea un left join,
                          // si no ponen esto solo les regresara todo como inner join
                          from x in un.DefaultIfEmpty()
                          orderby t.nombreTienda
                     select new VentasViewModel
                      {
                          idTienda = (x!=null) ? x.id : 0, //como hicimos left join podría haber datos nullos y debemos evaluar
                          nombreTienda =(x!=null) ? x.nombre : "",
                          domicilioTienda =(x!=null) ? x.domicilio : "", //asi obtenemos el domicilio
                          codigo = (x!=null )? x.codigoTienda : "",
                          total= d.total //este viene en ventas así que accedo con d
                          subtotal=d.subtotal //igual que arriba

                      };

Y así se hace la magia. Dudas en los comentarios.

Group_concat en #SQLServer, concatenar campos de un agrupamiento como en #mysql.

En este artículo explico cómo realizar una concatenación de un campo de una agrupación en SQL Server (algo parecido a lo que se obtiene con la función group_concat de mysql). Esto sirve para obtener en un registro todos los campos distintos de dicha agrupación. Por ejemplo, tenemos la siguiente tabla de nombre EstadoMunicipio:

tabla sql server - estados municipios

Suponiendo que deseamos agrupar los estados y obtener en un campo al lado la concatenación de sus municipios, eso en mysql se hace con una función llamada group_concat, en SQL Server no existiendo dicha función (que nos facilita todo) podemos obtener el mismo resultado utilizando la función Stuff de Sql Server, pero de una manera especial, como planteo en el siguiente query:

SELECT 
     Estado,
     STUFF(
         (SELECT  municipio +', ' 
          FROM EstadoMunicipio
          WHERE estado = a.estado
          FOR XML PATH (''))
          , 1, 0, '')  AS [Municipios Concatenados]
FROM EstadoMunicipio AS a
GROUP BY Estado

Este es el resultado:

resultado query group_concat sql server

De esa manera podemos realizar algo como lo que hace la función group_concat de mysql.

Si desean utilizar este query, basta con que sustituyan el nombre de la tabla EstadoMunicipio por el nombre de la que tengan ustedes, sustituyan también el nombre del campo municipio, el nombre del campo estado (que es el que utilizamos para agrupar) y la unión realizada en el where, por el campo por el cual están agrupando.