Преобразование данных служб данных WCF (OData) на выходе - PullRequest
2 голосов
/ 13 марта 2012

Справочная информация:
У меня есть служба данных WCF, подключенная к SQL Server через Entity Framework.

В одной из моих таблиц есть столбец типа varbinary.Он содержит строку XML-данных, которые должны быть сжаты по пути в базу данных (через другую службу).

Мой вопрос:
Я хотел бы иметь возможностьраспакуйте эти varbinary данные и измените их на XML или строковый объект, когда клиент запрашивает их через службу данных WCF (OData).

Возможно ли это?Если да, то куда мне подключить?

1 Ответ

0 голосов
/ 16 мая 2012

Вы можете воспользоваться преимуществами ChangeInterceptors в Odata, как показано здесь

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

При добавлении changeInterceptor к вызову Entity у вас будет доступ к его состоянию, и в зависимости от его состояния вы можете выполнить свою задачу, например, вот перехватчик изменений для одной из моих сущностей, «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;
    }

}
...