У меня есть 4 таблицы: Сообщение, Категория, Связь и мета
Категория
может содержать несколько сообщений
, и связь между ними сохраняется в таблице Relation
. Сообщение может содержать много дополнительной информации, которая хранится в Мета
таблице. Я хочу перечислить все сообщения с категориями и дополнительной информацией, а затем сгруппировать их по идентификатору сообщения.
У меня есть следующий запрос
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
и эти образцы данных:
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
, тогда результат будет
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
, и я ожидал результат будет
PostID Title Categories Meta
1 A Tips, Tricks Key1=Value1, Key2=Value2
Интересно, сможем ли мы преобразовать запрос из SQL в LINQ to Entities
с EF v4, и результат будет сохранен в таком классе
class Result
{
long ID,
string Title,
List<string> Categories,
Dictionary<string, string> Meta
}
Любая помощь будет принята с благодарностью.