EF6 vs. EF Core: modelo de datos

EF6 vs. EF Core: modelo de datos

Cuando hablamos de Entity Famework 6 «clásico» debemos tener en cuenta que su versión 1.0 apareció en 2008 y la última versión corresponde con la 6.4.4 lanzada el 15 de mayo de 2020. Todo los ORM (Object-Relational mapping), como también lo son NHibernate ó Dapper, facilitan una capa intermedia entre las bases de datos relacionales y el modelo de objetos de nuestra aplicación.

Dentro de la hoja de ruta de Microsoft para unificar tecnología .NET tambien afecta a este ORM, la nueva versión EF Core es una versión más ligera, extensible, modular y multiplataforma aunque algunas características previas todavía están pendientes de valorar su integración.

Leer más

Loopback 127.0.0.1 desaparecido

Problemas de red extraños en equipos que «nadie toca», sin saber como ha pasado necesitamos volver a añadir el interfaz invertido en Windows Server, ¿quien lo ha quitado? ¿Cómo? preguntas para otro día… el resultado es que haciendo ping a cualquier ip de red activa funciona, pero haciendo ping a 127.0.0.1 devuelve error general, veamos tres opciones para solucionarlo:

Comprobamos mediante el comando «route print» que aparece la interfaz:

Si no aparece podemos añadirla, para las rutas «En vínculo» especificamos «0.0.0.0»:

route ADD 127.0.0.0       MASK 255.0.0.0       0.0.0.0 metric 306
route ADD 127.0.0.1       MASK 255.255.255.255 0.0.0.0 metric 306
route ADD 127.255.255.255 MASK 255.255.255.255 0.0.0.0 metric 306

Otra opción es resetear el protocolo TCP/IP y la configuración Winsock (para aplicaciones antiguas):

netsh int ip reset c:\registro.txt
netsh winsock reset

En entornos Windows Server 2012 y anteriores podemos añadir manualmente:

1.- Ejecutamos en línea de comandos «cmd» con permisos de administrador: «hdwwiz.exe«
2.- Seleccionamos Adaptadores de red – Microsoft – Adaptador de bucle KM-TEST de Microsoft / Microsoft KM-TEST Loopback Adapter

3.- Asociamos la IP con la nueva tarjeta de red desde el Panel de control

También podemos acceder desde el menú de administración de dispositivos, seleccionamos previamente algún elemento del listado de dispositivos para que aparezca la opción:

Errores con Azure Backup Server – DPM

Errores con Azure Backup Server – DPM

Teniendo definidos varios grupos de protección diferentes en Azure Backup Server, uno de ellos fallaba continuamente al realizar la copia online diferencial. Curiosamente solo pasaba con unos directorios sin apenas movimiento, los registros del propio programa mostraban que se realizaba la copia local pero no la remota, otras fallaban ambas… un comportamiento errático difícil de acotar.

Debemos tener en cuenta el tipo de información incluido en el grupo de protección, ya que no es lo mismo realizar la protección de datos de carpetas locales con documentos de ofimática de poca rotación, un servidor de Exchange, una base de datos SQL, una máquina virtual… donde además pueden utilizarse otro tipo de mecanismos (como el servicio de instantáneas de volumen VSS)

Leer más

TIP: Hashtable to Object

Si bien existen librerias completas para asignar propiedades entre objetos, también es posible asignar de manera automática nuevos valores en pocas líneas de forma recursiva. En este caso se trata de asignar nuevos valores editados en un objeto que, por ejemplo, podremos utilizar para guardar los cambios dentro de Entity Framework. Un escenario común en un Grid:

using System.Data;
using System.Linq;
using System.Reflection;
...

Hashtable nuevosValores;
...

long idBuscado = long.Parse(nuevosValores["id"].ToString());
Coches n = miEntidad.Coches.Where(x => x.id == idBuscado).FirstOrDefault();

foreach (PropertyInfo p in n.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
    // Puede tener propiedades el objecto de la entidad que no se utilizan
    // por ejemplo la relación con otra tabla tambien aparece listada
    if (nuevosValores.ContainsKey(p.Name))
        p.SetValue(n, nuevosValores[p.Name]);
}

miEntidad.SaveChanges();

Un ejemplo sencillo del uso de la reflexión en los objectos.