Я пытаюсь передать GUID в виде строки через веб-сервисы, однако я натолкнулся на дорогу.GUID хранится в SQL Server как UNIQUEIDENTIFIER
, а EF извлекает его как GUID.В моем запросе я хотел бы сделать следующее:
var query = myEntities.Foo.Where(q => q.Id== Id)
.Select(bar =>
new Bar()
{ BString = bar.GUID }
);
Теперь C # выдает ошибку сборки, которую вы не можете преобразовать System.Guid
в string
, поэтому я думаю, что вы могли бы сделатьэто:
{ BString = bar.GUID.ToString() }
или даже
{ BString = Convert.ToString(bar.GUID) }
Но оба заканчиваются исключением во время выполнения:
Было исключение, это было System.NotSupportedException: LINQобъектам не распознается метод метода System.String ToString (System.Object), и этот метод нельзя преобразовать в выражение хранилища.
Поэтому я понимаю, что в обоих случаях это неспособен вычислить эквивалент T-SQL перехода от UniqueIdentifier
до varchar
.
Есть ли способ обойти это, кроме извлечения объекта, затем итерации по моему возвращаемому набору, копируя каждый объект в новый объекти преобразовать guid-> string в этот момент?
Спасибо.