in src/Core/Vipr/odataDemo.cs [175:271]
public DataServiceContextWrapper(Uri serviceRoot, global::Microsoft.OData.Client.ODataProtocolVersion maxProtocolVersion, global::System.Func<global::System.Threading.Tasks.Task<string>> accessTokenGetter)
: base(serviceRoot, maxProtocolVersion)
{
_accessTokenGetter = accessTokenGetter;
_accessTokenSetter = SetToken;
IgnoreMissingProperties = true;
BuildingRequest += (sender, args) =>
{
args.Headers.Add("Authorization", "Bearer " + _accessToken);
args.Headers.Add("X-ClientService-ClientTag", XClientStringClientTag);
};
Configurations.RequestPipeline.OnEntryStarting((args) =>
{
var entity = (EntityBase)args.Entity;
if ((!entity.ChangedProperties.IsValueCreated || entity.ChangedProperties.Value.Count == 0))
{
args.Entry.Properties = new ODataProperty[0];
return;
}
if (!_modifiedEntities.Contains(entity))
{
_modifiedEntities.Add(entity);
}
IEnumerable<ODataProperty> properties = new ODataProperty[0];
if (entity.ChangedProperties.IsValueCreated)
{
properties = properties.Concat(args.Entry.Properties.Where(i => entity.ChangedProperties.Value.Contains(i.Name)));
}
args.Entry.Properties = properties;
});
Configurations.ResponsePipeline.OnEntityMaterialized((args) =>
{
var entity = (EntityBase)args.Entity;
entity.ResetChanges();
});
OnCreated();
}