Tengo una base de datos con estas dos tablas: Customer
y CustomerStatus
. CustomerStatus
es una tabla llamada de solo lectura. Todos los cambios en el estado de un cliente dan como resultado un INSERTAR en esa tabla. El estado del cliente actual es localizable a través del CustomerStatus.StatusTimestamp
.Cómo incluir una fila específica de otra tabla con LINQ a Entidades
Ahora estoy buscando una consulta LINQ para entidades que cargue a todos los clientes junto con su estado actual. Algo así como
.Include("CustomerStatus.OrderByDescending(StatusTimestamp).FirstOrDefault()")
.
No he encontrado una manera adecuada con EF 4.0.
Mi solución actual es muy feo y utiliza 2 pasos:
Paso 1: consulta LINQ que carga todo el estado (en la capa de negocio/datos):
var r = from c in db.Customers.Include("CustomerStatus") select c;
paso 2: tomar el estado adecuado de cada cliente en la interfaz gráfica de usuario (en un bucle en una vista MVC3):
c.CustomerStatus.OrderByDescending(i => i.StatusTimestamp).FirstOrDefault()
¿Alguna idea de cómo se puede hacer esto directamente en un solo paso?
Funciona bien. ¡Gracias! En realidad todavía lo hago en 3 pasos, pero todo en el BLL ahora: 1: 'var q = ...'. 2: 'var l = q.ToList()' (para forzar la carga lenta del estado). 3: 'return l.Seleccione (i => i.Customer)' (para devolver un IEnumerable, y no un tipo anónimo). –
mkva