private void AddExpectedFunctionImportToCollection(ODataPayloadElementCollection collection) { var expectedTypeAnnotation = collection.GetAnnotation <ExpectedTypeODataPayloadElementAnnotation>(); if (expectedTypeAnnotation == null) { expectedTypeAnnotation = new ExpectedTypeODataPayloadElementAnnotation(); collection.Add(expectedTypeAnnotation); } if (expectedTypeAnnotation.ProductFunctionImport == null) { var typeAnnotation = collection.GetAnnotation <EntityModelTypeAnnotation>(); var collectionType = typeAnnotation.EdmModelType; if (this.testDescriptor.PayloadEdmModel != null) { EdmModel model = this.testDescriptor.PayloadEdmModel as EdmModel; EdmEntityContainer container = model.EntityContainer as EdmEntityContainer; var functionImport = container.OperationImports().FirstOrDefault(f => { return(f.Operation.ReturnType != null && f.Operation.ReturnType == collectionType); }); if (functionImport == null) { functionImport = container.OperationImports().FirstOrDefault(f => { return(f.Operation.ReturnType != null && f.Operation.ReturnType.IsCollection()); }); if (functionImport == null) { var collectionNameAnnotation = collection.GetAnnotation <CollectionNameAnnotation>(); container.AddFunctionAndFunctionImport(model, collectionNameAnnotation == null ? "NewFunctionImport" : collectionNameAnnotation.Name, collectionType); this.testDescriptor.ResetCachedModel(); } } expectedTypeAnnotation.ProductFunctionImport = functionImport as EdmOperationImport; } } }