BLTOOLKIT: ¿Cómo obtener el conjunto de resultados maestros-detects usando LINQ?
-
28-10-2019 - |
Pregunta
Aquí hay un ejemplo de uso de asociaciones de listas tomadas de BLTOOLKIT Documentación:
from p in db.Product
select new
{
p.OrderDetails.Count,
p.ProductName
};
dónde
class Product
{
[PrimaryKey, Identity]
public int ProductID;
public string ProductName;
[Association(ThisKey="ProductID", OtherKey="ProductID")]
public List<OrderDetail> OrderDetails;
}
¿Es posible obtener una lista de productos con detalles de pedidos para cada producto como este?
from p in db.Product
select new
{
Details = p.OrderDetails,
p.ProductName
};
El código anterior lanza LinqException con el siguiente mensaje:
No se puede encontrar convertidor para el 'system.collections.generic.list`1 [[OrderDetail, testProject, versión = 1.0.0.0, cultura = neutral, public keykoken = null]]' Tipo.
Solución
Usar el proveedor normal de LINQ a SQL esto funcionaría bien. Con el proveedor BLToolkit Linq no lo sé.
Otros consejos
Si bien no he usado el BLTOOLKIT, puede intentar usar una clase que define en lugar de confiar en un tipo anónimo.
Es decir, podrías definir una clase llamada MyOrder
que tiene propiedades String ProductName
y List<OrderDetail> OrderDetails
, y luego cambia tu consulta de Linq a algo como:
from p in db.Product
select new MyOrder
{
OrderDetails = p.OrderDetails,
ProductName = p.ProductName
};
No puedo garantizar que esto funcione, pero probablemente valga la pena (a menos que alguien publique algo más definitivo).