DbContext + (Identity + Entity Framework) + EF Core Power Tools

DbContext + (Identity + Entity Framework) + EF Core Power Tools

Vamos a intentar explicar un escenario de desarrollo en Visual Studio, en un modelo de diseño que parte de base de datos existente, SQL Server en este caso (Database first), en el cual integramos la autenticación mediante ASP.NET Core Identity con las tablas ya existentes relacionadas con lo usuarios de Identity; todo ello utilizando un único DbContext

Leer más
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
TIP: Hashtable to Object

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.