Использование Guid в службе данных ADO.Net - PullRequest
1 голос
/ 27 марта 2009

Я вытаскиваю свои волосы на этом. Я пытаюсь реализовать службу данных ADO.Net, которая использует контекст данных Linq to SQL. Я думал, что у меня это работает, но URL для одной из моих таблиц всегда получает исключение.

Очевидная разница между таблицей, которая не работает, и таблицей, которая заключается в том, что получающая исключение использует Guid, который является первичным ключом. Guid - это UserID, который на самом деле относится к UserId, используемому членством ASP.net. (Я не выставляю таблицы членства в ASP.net, но, полагаю, они тоже сломались бы.)

Это очень простая таблица: Имя: UserDetails :: | Guid UserID | int GroupID (внешний ключ) | Имя строки |

Кто-нибудь знает, есть ли хитрость, чтобы заставить Гидов работать? Или, может быть, это совсем другая проблема?

Вот исключение из сервиса: Произошла ошибка при обработке этого запроса.

InnerError: Произошла ошибка при обработке этого запроса.

Тип: System.InvalidOperationException

StackTrace: t System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue (элемент Object, String propertyName, ResourceType ОжидаемыйType, StringlativeUri, DictionaryContent content) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties (расширенный IExpandedResult, объект customObject, ResourceType resourceType, Uri absoluteUri, StringlativeUri, элемент SyndicationItem, содержимое DictionaryContent) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue (элемент Object, String propertyName, ResourceType ОжидаемыйType, StringlativeUri, DictionaryContent content) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties (расширенный IExpandedResult, объект customObject, ResourceType resourceType, Uri absoluteUri, StringlativeUri, элемент SyndicationItem, содержимое DictionaryContent) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue (элемент Object, String propertyName, ResourceType ОжидаемыйType, StringlativeUri, DictionaryContent content) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties (расширенный IExpandedResult, объект customObject, ResourceType resourceType, Uri absoluteUri, StringlativeUri, элемент SyndicationItem, содержимое DictionaryContent) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteEntryElement (IExpandedResult расширен, элемент Object, тип Ожидаемый тип, Uri absoluteUri, строка StringlativeUri, цель SyndicationItem) & # xD; в System.Data.Services.Serializers.SyndicationSerializer. d__0.MoveNext () & # xD; в System.ServiceModel.Syndication.Atom10FeedFormatter.WriteItems (средство записи XmlWriter, элементы IEnumerable`1, Uri feedBaseUri) & # xD; в System.ServiceModel.Syndication.Atom10FeedFormatter.WriteFeedTo (средство записи XmlWriter, канал SyndicationFeed, логический isSourceFeed) & # xD; в System.ServiceModel.Syndication.Atom10FeedFormatter.WriteFeed (модуль записи XmlWriter) & # xD; в System.ServiceModel.Syndication.Atom10FeedFormatter.WriteTo (модуль записи XmlWriter) & # xD; в System.Data.Services.Serializers.SyndicationSerializer.WriteTopLevelElements (расширен IExpandedResult, элементы IEnumerator, логический hasMoved) & # xD; в System.Data.Services.Serializers.Serializer.WriteRequest (IEnumerator queryResults, Boolean hasMoved) & # xD; в System.Data.Services.ResponseBodyWriter.Write (Потоковый поток)

Ответы [ 2 ]

1 голос
/ 27 марта 2009

Это похоже на ошибку. Я предлагаю вам сообщить об этом по номеру http://connect.microsoft.com/visualstudio/,, а затем опубликовать URL своего сообщения об ошибке здесь, чтобы мы могли проголосовать за него.

0 голосов
/ 27 марта 2009

Я нашел решение своей проблемы. На самом деле это вообще не было связано с использованием значения Guid.

Мне пришлось добавить [IgnoreProperties ("User")] в мой класс UserDetail в Linq to SQL.

Свойство «Пользователь» является отношением к классу «Пользователь», который содержит пользовательскую информацию о членстве в ASP.Net (фактическое имя таблицы - aspnet_Users). У меня есть класс Linq to SQL «Пользователь», игнорируемый службой данных, поэтому я думаю, что это, должно быть, проблема.

Что меня удивило, так это то, что служба данных не выдавала никаких ошибок, когда я к ней обращался. Со всеми остальными свойствами, где мне нужно было добавить украшение DataServiceKey () или IgnoreProperties (), когда я обращался к DataService.svc, я получал исключение с жалобой на свойство проблемы. По какой-то причине это не доставило мне проблем с этим единственным свойством, поэтому я не знал, что что-то не так. И как вы можете видеть выше, когда я получил исключение, это было бесполезно.

Итак, для всех, кто использует Linq To SQL с ADO.Net Data Services, этот урок: Убедитесь, что вы используете IgnoreProperties () для любого свойства, которое ссылается на класс, который вы игнорируете.

...