Используя Linq2Entities (EF4), мне нужно запросить объект, у которого есть свойство Guid
(назовите его id
).Мне нужно спросить, есть ли у моей сущности какие-либо записи, которые имеют id
s, начиная с заданного префикса.
По сути, мне нужно что-то вроде
from items in myEntity
where items.id.ToString().StartsWith(prefix)
// rest of the query
Теперь я знаючто L2EF не поддерживает преобразования Guid
членов с использованием ToString()
.
Помощник SqlFunctions.StringConvert()
также не поддерживает его, поскольку не принимает аргумент Guid
.
И я не могу использовать SQL LIKE
, как в
from items in myEntity
where items.id like 'prefix%'
, потому что он также не поддерживается L2EF.
Все рекомендации, которые я нашелдо сих пор предлагаем использовать Contains()
, но это просто не то же самое, что starts with
.... В случае Guid
s, например, первые 8 символов могут быть найдены в последних 13 символах.
Итак, как бы вы использовали L2EF для запроса записей, у которых Guid начинается с "prefix"?
Я могу подумать о некоторых хаках, таких как преобразование поля uniqueidentifier
в внутренней базе данных SQL вvarchar()
, но мне бы очень хотелось понять, если я просто делаю это неправильно, прежде чем прибегнуть к чему-то подобному.