【问题标题】:Transform WCF Data Services (OData) data on the way out在出路时转换 WCF 数据服务 (OData) 数据
【发布时间】:2016-07-26 20:42:17
【问题描述】:

背景:
我有一个通过实体框架连接到 SQL Server 的 WCF 数据服务。

我的一个表有一个类型为 varbinary 的列。它包含一个 XML 数据字符串,应该在进入数据库的过程中(通过不同的服务)进行压缩。

我的问题:
当客户端通过 WCF 数据服务 (OData) 查询它时,我希望能够解压缩此 varbinary 数据并将其更改为 XML 或字符串对象。

这可能吗?如果是这样,我应该在哪里插入?

【问题讨论】:

    标签: wcf-data-services odata


    【解决方案1】:

    您可以利用 Odata 中的 ChangeInterceptors,如下所示

    http://msdn.microsoft.com/en-us/library/dd744842.aspx

    当向实体调用添加 changeInterceptor 时,您将可以访问其状态,并且根据其状态,您可以执行您的任务,例如这里是我的一个实体“Term”的更改拦截器

    [ChangeInterceptor("Term")]
    public virtual void OnChangeTerm (Term reqObj, UpdateOperations operations){
        OnChangeInterceptor<Term>(reqObj, operations, CurrentDataSource);
    }
    
    
    protected virtual void OnChangeInterceptor<TEntity>(TEntity entity, UpdateOperations operations, IDataContext currentDataSource)
    {
        switch (operations){
                        case UpdateOperations.Add:
                            ServiceController.OnAddEntityRequest(entity, currentDataSource);
                            break;
                        case UpdateOperations.Change:
                            ServiceController.OnUpdateEntityRequest(entity, currentDataSource);
                            break;
                        case UpdateOperations.Delete:
                            ServiceController.OnDeleteEntityRequest(entity, currentDataSource);
                            break;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多