Я попробовал сейчас — выдает exception «Не удалось создать константу с типом „Анонимный тип“. В этом контексте поддерживаются только типы-примитивы и типы перечисления.»
Это версионная система, в ней по определению нет Update и Delete. Единственное что можно делать, это вставлять новые записи с обновленной версией. Все запросы получают данные из БД только последней версии. И в этой системе, как и в любой другой, нужно получать список элементов по их идентификатору (составному в данном случае).
Например получение самих значений из БД по идентификаторам, которые вернул Sphinx…
В Join анонимный тип нужен для того, чтобы указать поля для сравнения, а уже сам EF по этим полям генерирует SQL. Where такого не умеет, как минимум потому, что в Join подразумевается операция = а в Where может быть что угодно.
Если бы была возможность использовать сложные типы в Where, то нужно было бы для типов указывать equality comparer (что, кстати для анонимных типов невозможно), и EF пришлось бы как-то переводить толику из метода Equals в SQL, а это, мягко говоря, непростая задача!
я плохо отношусь к строковым запросам в коде, это настоящий рассадник потенциальных ошибок!
Строго типизированное построение запросов сильно упростило мне жизнь, и мне захотелось решить проблему не отходя от LINQ
Например получение самих значений из БД по идентификаторам, которые вернул Sphinx…
Если бы была возможность использовать сложные типы в Where, то нужно было бы для типов указывать equality comparer (что, кстати для анонимных типов невозможно), и EF пришлось бы как-то переводить толику из метода Equals в SQL, а это, мягко говоря, непростая задача!
Строго типизированное построение запросов сильно упростило мне жизнь, и мне захотелось решить проблему не отходя от LINQ