Уловка, позволяющая избежать фильтрации по обнуляемым параметрам в SQL, была примерно такой:
select * from customers where (@CustomerName is null or CustomerName = @CustomerName)
Это хорошо сработало для меня в LINQ to SQL:
string customerName = "XYZ";
var results =
(from c in ctx.Customers
where (customerName == null || (customerName != null && c.CustomerName == customerName))
select c);
Но это вышезапрос в ADO.NET EF не работает для меня;он должен фильтровать по имени клиента, потому что он существует, но это не так.Вместо этого он запрашивает все записи клиентов.Теперь это упрощенный пример, потому что у меня есть много полей, с которыми я использую такую логику.Но на самом деле он никогда не фильтрует, не запрашивает все записи и не вызывает исключение тайм-аута.Но страннее то, что другой запрос делает что-то аналогично, без проблем.
Есть идеи почему?Похоже, ошибка для меня, или есть обходной путь для этого?С тех пор я переключился на методы расширения, которые работают.
Спасибо.