У меня есть 4 таблицы: сообщение, категория, отношение и мета
A category
может содержать несколько posts
, и соотношение между ними сохраняется в таблице Relation
. Сообщение может содержать много дополнительной информации, которая хранится в таблице Meta
. Я хочу перечислить все сообщения с категориями и дополнительной информацией, а затем сгруппировать их по идентификатору.
У меня есть следующий запрос
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
}
Любая помощь будет оценена.