首页 > 解决方案 > 将 Devart Oracle 提供程序与 OData 一起使用时出现 DataServiceException

问题描述

我正在使用 Devart Oracle 驱动程序使用 OData 端点调用它。

在其中一种环境中,我收到错误消息:

Data service failure.
An exception was thrown of type DataServiceException.
    Message: Internal Server Error. The type 'System.Data.Services.Internal.ProjectedWrapper3' is not a complex type or an entity type.
    Source: Microsoft.Data.Services
    Help Link: 
    ErrorCode: 
    HResult: -2146233079
    MessageLanguage: en-US
    StatusCode: 500
    TargetSite: System.Data.Services.Providers.ResourceType GetNonPrimitiveResourceType(System.Data.Services.Providers.DataServiceProviderWrapper, System.Object)
    Exception Type: System.Data.Services.DataServiceException, Microsoft.Data.Services, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Additional Information:
    FullName: Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null
    IdentityName: NT AUTHORITY\NETWORK SERVICE

Stack Trace:
       at System.Data.Services.WebUtil.GetNonPrimitiveResourceType(DataServiceProviderWrapper provider, Object obj)
       at System.Data.Services.Serializers.EntitySerializer.WriteEntry(IExpandedResult expanded, Object element, Boolean resourceInstanceInFeed, ResourceType expectedType)
       at System.Data.Services.Serializers.EntitySerializer.WriteFeedElements(IExpandedResult expanded, QueryResultInfo elements, ResourceType expectedType, String title, Func`1 getRelativeUri, Func`1 getAbsoluteUri, Boolean topLevel)
       at System.Data.Services.Serializers.EntitySerializer.WriteTopLevelElements(IExpandedResult expanded, QueryResultInfo elements)
       at System.Data.Services.Serializers.Serializer.WriteRequest(QueryResultInfo queryResults)
       at System.Data.Services.ResponseBodyWriter.Write(Stream stream)

执行下一个请求时:

var type = modelServiceWrapper.CreateQuery<MyClass>()
                .OrderBy(m => m.Subclass.Property1)
                .Where(m => m.Id == id && m.Subclass.Property2 == typeToFilterOn)
                .Select(m => new {m.Id})
                .FirstOrDefault();

看起来这是一个特定于环境的问题,因为相同的 IIS 文件夹和相同的数据库在其他环境中工作正常。

看起来错误消息是从这里抛出的,但我无法更深入地找出 Devart Oracle 提供程序无法处理 ProjectedWrapper* 对象的原因。

有人遇到过这样的问题吗?

更新

看起来问题与数据或数据库设置有关。我试图将同一环境中的相同代码指向不同的数据库,但没有遇到问题。

ProxyCreation id 也被禁用。

标签: oracleentity-frameworkodatadevart

解决方案


推荐阅读