我试图将实体框架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)上的nativeResourceTypeMap)
  metadataCacheItem)
  System.Data.Services.Providers.BaseServiceProvider.LoadMetadata(布尔
  skipServiceOperations)
  System.Data.Services.DataService 1.CreateInternalProvider(Object dataSourceInstance) at System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider&
  metadataProviderInstance,IDataServiceQueryProvider&
  queryProviderInstance,Object&dataSourceInstance,Boolean&
  isInternallyCreatedProvider)
  System.Data.Services.DataService 1.CreateProvider() at System.Data.Services.DataService 1.HandleRequest()在
  System.Data.Services.DataService`1.ProcessRequestForMessage(Stream
  SyncInvokeProcessRequestForMessage(Object,Object []处的messageBody)
  Object [])位于
  System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象
  实例,Object []输入,Object []&输出)
  System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&
  rpc)
  System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&
  rpc)
  System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&
  rpc)位于System.ServiceModel.Dispatcher.MessageRpc.Process(布尔
  isOperationContextSet)


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

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

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

最佳答案

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数据服务公开枚举甚至自定义字符串表示形式。

关于c# - WCF数据服务是否有任何解决方法可以绕过OData V3枚举支持中的缺失?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25680228/

10-11 23:15
查看更多