private void TestApplyItemsToCollection( TestCustomer customer, IEnumerable orders, MergeOption option, TestEntityTracker entityTracker, bool isContinuation) { var customerDescriptor = new EntityDescriptor(this.clientEdmModel) { Entity = customer }; var materializerEntry = MaterializerEntry.CreateEntryForLoadProperty(customerDescriptor, ODataFormat.Json, true); materializerEntry.ActualType = this.clientEdmModel.GetClientTypeAnnotation(clientEdmModel.GetOrCreateEdmType(typeof(TestCustomer))); var adapter = new EntityTrackingAdapter( entityTracker, option, clientEdmModel, new DataServiceContext()); EntryValueMaterializationPolicy evmp = new EntryValueMaterializationPolicy( materializerContext, adapter, null, new Dictionary <IEnumerable, DataServiceQueryContinuation>()); evmp.ApplyItemsToCollection( materializerEntry, ordersProperty, orders, null, null, isContinuation); if (entityTracker.GetEntityDescriptorFunc != null) { adapter.MaterializationLog.ApplyToContext(); } }
internal EntryValueMaterializationPolicy CreateEntryMaterializationPolicy(TestMaterializerContext materializerContext = null) { var clientEdmModel = new ClientEdmModel(ODataProtocolVersion.V4); var context = new DataServiceContext(); materializerContext = materializerContext ?? new TestMaterializerContext() { Model = clientEdmModel, Context = context }; var adapter = new EntityTrackingAdapter(new TestEntityTracker(), MergeOption.OverwriteChanges, clientEdmModel, context); var lazyPrimitivePropertyConverter = new Microsoft.OData.Client.SimpleLazy <PrimitivePropertyConverter>(() => new PrimitivePropertyConverter()); var primitiveValueMaterializerPolicy = new PrimitiveValueMaterializationPolicy(materializerContext, lazyPrimitivePropertyConverter); var entryPolicy = new EntryValueMaterializationPolicy(materializerContext, adapter, lazyPrimitivePropertyConverter, null); var collectionPolicy = new CollectionValueMaterializationPolicy(materializerContext, primitiveValueMaterializerPolicy); var intanceAnnotationPolicy = new InstanceAnnotationMaterializationPolicy(materializerContext); entryPolicy.CollectionValueMaterializationPolicy = collectionPolicy; entryPolicy.InstanceAnnotationMaterializationPolicy = intanceAnnotationPolicy; return(entryPolicy); }