Я создаю метод репозитория (Entity Framework) для получения коллекции идентификаторов, предоставляемых флажками в форме как часть CMS, и обновляю таблицу поиска (набор сущностей), которая связывает темы с публикациями.
У меня есть этот метод в репозитории:
public void AttachToTopics(int pubId, IQueryable<int> topicsForAssociation, IQueryable<int> topicsSubset, int primaryTopicId)
{
// EVERYTHING IS FINE IF I INSERT A MANUAL COLLECTION OF int LIKE THIS:
// var priorAssociatedTopics = new[] { 2 }.AsQueryable(); //
// BUT WHAT I REALLY NEED TO WORK IS THIS:
IQueryable<int> priorAssociatedTopics = ListTopicIdsForPublication(pubId);
var priorAssociatedTopicsToExamine = priorAssociatedTopics.Intersect(topicsSubset);
var topicsToAdd =
associatedTopics.Intersect(topicsSubset).Except(priorAssociatedTopicsToExamine);
foreach (var topicToAdd in topicsToAdd)
AttachToTopic(pubId, topicToAdd);
foreach (var topicToRemove in priorAssociatedTopicsToExamine.Except(associatedTopics))
DetachFromTopic(pubId, topicToRemove);
}
Дроссели AttachToTopics в первом цикле foreach, приводящие к этому сообщению об ошибке:
This method supports the LINQ to Entities infrastructure and is not intended to be used directly from your code.
Но проблема действительно впервая строка: метод репозитория, вызываемый в этой строке, обеспечивает соответствующую типизированную коллекцию в priorAssociatedTopics, и у Intellisense нет проблем с явной типизацией его как IQueryable (обычно я бы использовал var), а отладчик показывает, что эта переменная содержит коллекциюцелые числа.
public IQueryable<int> ListTopicIdsForPublication(int pubId)
{
var topics = from x in DataContext.TopicPublications where x.PublicationId == pubId select x;
return topics.Select(t => t.Id);
}
Однако обратно в attachToTopics моя коллекция themesToAdd не заполняется, и ее Представление результатов в отладке содержит вышеупомянутое сообщение об ошибке.
Любопытно, если я переключаюсь ввручную сгенерированная коллекция IQueryable для priorAssociatedTopics(см. комментарий в коде выше) цикл foreach работает нормально.Поэтому я полагаю, что мне нужно найти какой-то другой способ получить priorAssociatedTopics, заполненный целыми числами, из вызова метода в моем хранилище.
Есть какая-нибудь подсказка?