我正在尝试将实体框架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.DataService1.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枚举值?
答案 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甚至自定义字符串表示。