【问题标题】:Using Guid in ADO.Net Data Service在 ADO.Net 数据服务中使用 Guid
【发布时间】:2009-03-26 22:46:41
【问题描述】:

我正在把头发拉出来。我正在尝试实现使用 Linq to SQL 数据上下文的 ADO.Net 数据服务。我以为我可以正常工作,但我的一张表的 URL 总是出现异常。

不工作的表和正常工作的表之间的明显区别在于,获得异常的表使用的是主键 Guid。 Guid 是一个 UserID,它实际上与 ASP.net Membership 使用的 UserId 相关。 (我没有公开 ASP.net Membership 表格,但我猜如果我公开这些表格也会中断。)

这是一个非常简单的表格: 名称:用户详情 :: |指导用户 ID | int GroupID (外键) |字符串名称 |

有人知道让Guids 工作的技巧吗?或者如果这可能是一个完全不同的问题?

以下是服务的例外情况: 处理此请求时出错。

InnerError:处理此请求时发生错误。

类型:System.InvalidOperationException

堆栈跟踪: t System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue(对象元素,字符串属性名称,资源类型预期类型,字符串 relativeUri,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties(IExpandedResult 扩展,对象 customObject,ResourceType 资源类型,Uri absoluteUri,字符串 relativeUri,SyndicationItem 项,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue(对象元素,字符串 propertyName,ResourceType 预期类型,字符串 relativeUri,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties(IExpandedResult 扩展,对象 customObject,ResourceType 资源类型,Uri absoluteUri,字符串 relativeUri,SyndicationItem 项,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteComplexObjectValue(对象元素,字符串 propertyName,ResourceType 预期类型,字符串 relativeUri,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties(IExpandedResult 扩展,对象 customObject,ResourceType 资源类型,Uri absoluteUri,字符串 relativeUri,SyndicationItem 项,DictionaryContent 内容) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteEntryElement(IExpandedResult 扩展,对象元素,类型 expectedType,Uri absoluteUri,字符串 relativeUri,SyndicationItem 目标) 在 System.Data.Services.Serializers.SyndicationSerializer.d__0.MoveNext() 在 System.ServiceModel.Syndication.Atom10FeedFormatter.WriteItems(XmlWriter 编写器,IEnumerable`1 项,Uri feedBaseUri) 在 System.ServiceModel.Syndication.Atom10FeedFormatter.WriteFeedTo(XmlWriter 编写器,SyndicationFeed 提要,布尔 isSourceFeed) 在 System.ServiceModel.Syndication.Atom10FeedFormatter.WriteFeed(XmlWriter 编写器) 在 System.ServiceModel.Syndication.Atom10FeedFormatter.WriteTo(XmlWriter writer) 在 System.Data.Services.Serializers.SyndicationSerializer.WriteTopLevelElements(IExpandedResult 扩展,IEnumerator 元素,布尔 hasMoved) 在 System.Data.Services.Serializers.Serializer.WriteRequest(IEnumerator queryResults,布尔 hasMoved) 在 System.Data.Services.ResponseBodyWriter.Write(Stream 流)

【问题讨论】:

    标签: linq-to-sql guid wcf-data-services


    【解决方案1】:

    这看起来像一个错误。我建议您在http://connect.microsoft.com/visualstudio/ 报告它,然后在此处发布您的错误报告的 URL,以便我们对其进行投票。

    【讨论】:

      【解决方案2】:

      我找到了解决问题的方法。它实际上根本与使用 Guid 值无关。

      我必须在 Linq to SQL 的 UserDetail 类中添加一个 [IgnoreProperties("User")]。

      “User”属性是与“User”类的关系,该类包含 ASP.Net Memberships 用户信息(实际表名是 aspnet_Users)。我的 Linq to SQL“用户”类被数据服务忽略了,所以我认为这一定是问题所在。

      让我失望的是,当我访问数据服务时,它没有抛出任何错误。对于所有其他属性,我必须添加 DataServiceKey() 或 IgnoreProperties() 装饰,当我访问 DataService.svc 时,我会收到一个抱怨问题属性的异常。不管出于何种原因,它并没有给我这个属性带来问题,所以我不知道有什么问题。正如您在上面看到的,当我确实遇到异常时,它并没有用。

      所以对于任何其他使用 Linq To SQL 和 ADO.Net 数据服务的人来说,这就是教训: 确保对引用您忽略的类的任何属性使用 IgnoreProperties()。

      【讨论】:

        猜你喜欢
        • 2010-09-06
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        • 2010-09-26
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多