Linq2Sql Многие: Многие вопросы, как бы вы это сделали? - PullRequest
7 голосов
/ 15 декабря 2008

Я знаю много: многие не поддерживаются в Linq2Sql, но я работаю над обходным путем

Я работаю с моим маленьким SO-клоном, у меня есть таблица с вопросами, таблица с тегами и таблица ссылок QuestionTag, поэтому у меня классическая связь «многие: многие» между вопросами и тегами.

Чтобы отобразить список Вопросов на первой странице, у меня есть этот класс, который я хочу заполнить из запроса Linq2Sql

public class ListQuestion
{
   public int QuestionID { get; set; }
   public string Title{ get; set; }
   public IEnumerable<Tag> Tags { get; set; }
}


public IEnumerable<ListQuestion> GetQuestions()
{
   from q in Questions
   .................
   select new ListQuestion{ ... }
}

Проблема в том, как мне пополнить коллекцию тегов. Я обнаружил, что это невозможно сделать в одном запросе, поэтому я разделил это на два запроса: один для получения вопросов и один для получения тегов, а затем попытался присоединиться к ним. Я знаю многих: многие поддерживаются в Entity Framework, так как они это делают? Как бы вы это сделали? Любой альтернативный подход? Конечно, запрос должен быть эффективным.

1 Ответ

4 голосов
/ 16 декабря 2008

Это может работать для вашего случая;

from q in Questions
select new ListQuestion 
{ 
  Tags = q.QuestionTags.Select(qt => qt.Tag),
  QuestionId = q.ID,
  Title = q.Title
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...