在出路时转换WCF数据服务(OData)数据

时间:2012-03-13 15:41:25

标签: wcf-data-services odata

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以利用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;
    }

}