代码之家  ›  专栏  ›  技术社区  ›  Eugene D. Gubenkov

WCF数据服务是否有解决方法来绕过OData V3枚举支持中的缺失?

  •  2
  • Eugene D. Gubenkov  · 技术社区  · 10 年前

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

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

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

    异常堆栈跟踪为:

    System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMemberMetadata(ResourceTypeCacheItem resourceTypeCacheItem,IProviderMetadata工作区, 提供程序元数据缓存项元数据缓存项,PrimitiveResourceTypeMap 位于System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMetadata(ProviderMetadataCacheItem metadataCacheItem)位于 System.Data.Services.Providers.BaseServiceProvider.LoadMetadata(布尔值 skipServiceOperations)位于 System.Data.Services.DataService 1.CreateInternalProvider(Object dataSourceInstance) at System.Data.Services.DataService 1.创建元数据和查询提供程序(IDataServiceMetadataProvider& metadataProviderInstance、IDataServiceQueryProvider& queryProviderInstance,对象&数据源实例,布尔型& isInternalyCreatedProvider)位于 System.Data.Services.DataService 1.CreateProvider() at System.Data.Services.DataService 1.HandleRequest()位于 System.Data.Services.DataService`1.ProcessRequestForMessage(流 messageBody)在SyncInvokeProcessRequestForMessage(对象,对象[], 对象[])位于 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,对象[]输入,对象[]&输出) System.ServiceModel.Datcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)位于 System.ServiceModel.Datcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)位于 System.ServiceModel.Datcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)在System.ServiceModel.Dispatcher.MessageRpc.Process(布尔 isOperationContextSet)

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

    也是WCF DS的EF提供程序 doesn't support System.Data.Services.IgnorePropertiesAttribute 只能使用反射提供程序来隐藏枚举。

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

    1 回复  |  直到 10 年前
        1
  •  2
  •   Community THelper    7 年前

    事实是“ 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数据服务公开枚举,甚至不能公开它们的自定义字符串表示。