2012-03-13 64 views
2

背景:
我有一个WCF数据服务通过实体框架连接到SQL Server。在路上转换WCF数据服务(OData)数据

我的一个表有一个类型为varbinary的列。它保存着一串XML数据,这些数据应该在进入数据库的路上被压缩(通过不同的服务)。

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

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

回答

0

这里

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

当添加changeInterceptor到实体叫你将有机会获得其状态,并根据其状态,你可以执行你的任务所示。你可以利用ChangeInterceptors中的OData示例这里是我的一个实体的变更拦截器,“术语”

[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; 
    } 

}