Linq to SQL, где предложение In приводит к тому, что объект не установлен как экземпляр объекта - PullRequest
4 голосов
/ 01 июля 2010

У меня есть две таблицы, подписки и темы. Каждая подписка связана с определенным TopicID (PK для таблицы тем). Первый запрос работает нормально и возвращает topicID всех видео, которые были загружены сегодня.

Проблема возникает, когда я пытаюсь и затем использую результаты query1 как предложение where для запроса 2. Я продолжаю получать ссылку на объект, не установленную для экземпляра объекта.

Запрос 1

IQueryable<int> topics = (from t in dataLayer.Videos
                  where SqlMethods.DateDiffDay(t.DateCreated, DateTime.Today) == 0
                 select t.TopicID).Distinct();

Запрос 2 (сбой)

 IQueryable<Subscription> subs = from s in dataLayer.Subscriptions
                                     where topics.Contains(s.TopicID)
                                     select s;

Запрос Linq, генерируемый при сбое, равен {Table(Subscription).Where(s => value(EmailSubscribers+<>c__DisplayClass0).topics.Contains(s.TopicID))}

Любое понимание этого будет оценено. Я посмотрел на некоторые образцы в сети, и все они, похоже, идентичны моим.

1 Ответ

3 голосов
/ 01 июля 2010

Вам может понадобиться ToList () вашего первого запроса, чтобы он точно был выполнен.

...