我试图将实体框架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/