WCF数据服务是否有任何解决方法可以绕过OData V3枚举支持中的缺席?

时间:2014-09-05 06:58:58

标签: c# wcf enums wcf-data-services

我正在尝试将实体框架5.0(模型优先方法)与WCF数据服务5.6.2一起使用并遇到以下问题:

当数据服务在初始化阶段失败时,WCF数据服务的实体数据模型包含Enum属性:

  

服务器在处理请求时遇到错误。异常消息是:“类型'Y'上的属性'X'的类型为'enum-type-here',它不是受支持的基本类型。”

     

异常堆栈跟踪是:

     

System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMemberMetadata(ResourceTypeCacheItem   resourceTypeCacheItem,IProviderMetadata工作空间,   ProviderMetadataCacheItem metadataCacheItem,PrimitiveResourceTypeMap   在System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMetadata(ProviderMetadataCacheItem)中的primitiveResourceTypeMap)   metadataCacheItem)at   System.Data.Services.Providers.BaseServiceProvider.LoadMetadata(布尔   skipServiceOperations)at   System.Data.Services.DataService 1.CreateInternalProvider(Object dataSourceInstance) at System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider&安培;   metadataProviderInstance,IDataServiceQueryProvider&   queryProviderInstance,Object& dataSourceInstance,Boolean&   isInternallyCreatedProvider)at   System.Data.Services.DataService 1.CreateProvider() at System.Data.Services.DataService 1.HandleRequest()at   System.Data.Services.DataService`1.ProcessRequestForMessage(流   messageBody)在SyncInvokeProcessRequestForMessage(Object,Object [],   对象[])在   System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象   实例,对象[]输入,对象[]&输出)   System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&安培;   rpc)at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean   isOperationContextSet)

我发现解决这个问题的only advise是将这些属性标记为[NotMapped],但是当我使用此属性注释T4生成的类的枚举属性时,它什么都不做,数据服务仍然失败。

WCF DS doesn't support System.Data.Services.IgnorePropertiesAttribute的EF提供程序,可用于仅使用Reflection提供程序隐藏枚举。

如何使用WCF数据服务公开字符串而不是DB存储的int-backed枚举值?

1 个答案:

答案 0 :(得分:1)

" EF provider for WCF DS doesn't support System.Data.Services.IgnorePropertiesAttribute"和" EF provider also doesn't allow to expose any 'new' properties that aren't in the underlying EDM model"给了我一个悲伤的答案:

不,我们无法使用带EF Provider的WCF数据服务公开Enums甚至自定义字符串表示。