tengo 4 tablas: Post, Categoría, relaciones y Meta¿Cómo se usa GroupBy correctamente en LINQ?
Un category
lata contiene múltiples posts
, y la relación entre ellos se almacena en Relation
mesa. Una publicación puede tener mucha información adicional almacenada en la tabla Meta
. Quiero enumerar todas las publicaciones con categorías e información adicional, y luego agruparlas por ID de publicación.
Tengo la siguiente consulta
select p.ID, p.Title, t.Name, m.Key, m.Value from Post p
left join Relation r on p.ID = r.Child
left join Category c on r.Parent = c.ID
left join Meta m on p.ID = m.Object
where m.Type = 'news'
order by p.ID
y con estos datos de ejemplo:
Post
ID Title
1 A
Category
ID Name
1 Tips
2 Tricks
Meta
ID Object Key Value
1 1 Key1 Value 1
2 1 Key2 Value 2
Relation
ID Child Parent
1 1 1
2 1 2
entonces el resultado será
PostID Title Category Key Value
1 A Tips Key1 Value1
1 A Tips Key2 Value2
1 A Tricks Key1 Value1
1 A Tricks Key2 Value2
y que esperaba que el resultado sea
PostID Title Categories Meta
1 A Tips, Tricks Key1=Value1, Key2=Value2
Me pregunto si podemos convertir la consulta de SQL para LINQ to Entities
con v4 EF y el resultado se almacena en una clase como esta
class Result
{
long ID,
string Title,
List<string> Categories,
Dictionary<string, string> Meta
}
Cualquier ayuda sería apreciada.
¿Qué hace el SQL generado con esas selecciones adicionales? ¿Es lo suficientemente pequeño para publicar? ¿Qué base de datos/EF backend - SQL Server? – Rup
He agregado la salida de SQL. Estoy usando SQL Server con Entity Framework v4 – ByulTaeng
En otras palabras, está realizando una consulta para buscar los ID de los objetos y luego una consulta separada para cargar cada objeto. Estoy realmente sorprendido de que esté haciendo eso: -/ – Rup