При попытке присоединить массив к запросу Linq-to-EF я получаю следующую ошибку
Произошла ошибка при выполнении определения команды.Смотрите внутреннее исключение для деталей.Некоторая часть вашего оператора SQL вложена слишком глубоко.Перепишите запрос или разбейте его на более мелкие запросы.
Код выглядит следующим образом:
var vids = new List<string>();
using (var ctx = new MyDbContext())
{
var qry = ctx.Pickups.Where(p => p.UserName == User.Identity.Name);
if (someBoolean)
{
var v = GetVids(); // get the list of Ids from a web service
vids.AddRange(v);
}
if (vids.Count() > 0)
{
qry = qry.Join(vids, p => p.VId, v => v, (v, p) => p);
}
var data = qry
.Select(p => new
{
// etc.
});
}
Проблема заключается в том, что веб-служба не связана с БД I 'Я использую EF с, иначе я бы просто сделал соединение с таблицами в БД.Количество идентификаторов, которые я получаю от веб-службы, может превышать сотню или около того (обычно 5-10).Если я закомментирую Join, код работает нормально, поэтому я знаю, что ошибка в Join.При наличии нескольких (до 30) идентификаторов в vids соединение работает идеально.
Что вы порекомендуете для решения этой проблемы?Единственное, о чем я мог подумать, это вставить список идентификаторов в БД и выполнить соединение таким образом.Мне это не кажется привлекательным.