Buenas,
Estoy usando EF 6.0 y los patrones de Entidad y Especificación que propone Unai Zorrilla en el libro "Arquitectura N-Capas DDD .NET 4.0" (http://geeks.ms/blogs/unai/archive/2010/03/24/microsoft-ddd-n-layer-net-4-0-los-materiales.aspx)
El problema ha aparecido cuando he querido hacer filtros en las Entidades incluidas. Es decir, si yo tengo [Factura] y [FacturaDetalle], quisiera poder hacer una búsqueda de las Facturas que cumplieran la especificación ubicada en el detalle.
Me quedo aquí:
System.Data.Entity.DbSet<Factura> set = (System.Data.Entity.DbSet<Factura>)GetSet<Factura>();
var facturas = set
.Include(f => f.Lineas)
.Where(facturaSpecification.SatisfiedBy());
He intentado añadiendo:
facturas = (from factura in facturas
select new {
factura,
lineas = from linea in facturas.Lineas
where lineaSpecification.SatisfiedBy() //No cumple, espera bool
select linea
}).AsEnumerable().Select(a => a.factura);
o reemplazando por
var facturas = set
.Include(g => g.Lineas)
.Where(facturaSpecification.SatisfiedBy())
.Where(f => f.Lineas.Where(sampleSpecification.SatisfiedBy())); //No cumple. Devuelve un enumerado
Tipo que devuelve el método SatisfiedBy()
lineaSpecification.SatisfiedBy() devuelve System.Linq.Expressions.Expression<Func<FacturaDetalle, bool>>
facturaSpecification.SatisfiedBy() devuelve System.Linq.Expressions.Expression<Func<Factura, bool>>
Gracias de antemano por la ayuda.
Tecnología .NET