Вы можете воспользоваться преимуществами 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;
}
}