public void BuildPathWithFunctionImport() { ODataUri odataUri = new ODataUri(); odataUri.ServiceRoot = new Uri("http://gobbledygook/"); IEdmOperationImport functionImport = HardCodedTestModel.TestModel.EntityContainer.FindOperationImports("GetPet1").Single(); IEdmEntitySetReferenceExpression reference = functionImport.EntitySet as IEdmEntitySetReferenceExpression; OperationSegmentParameter[] parameters = new OperationSegmentParameter[] { new OperationSegmentParameter("id", new ConstantNode(1, "1")) }; odataUri.Path = new ODataPath(new OperationImportSegment( new IEdmOperationImport[] { functionImport }, reference.ReferencedEntitySet, parameters)); ODataUriBuilder odataUriBuilder = new ODataUriBuilder(ODataUrlConventions.Default, odataUri); Uri actual = odataUriBuilder.BuildUri(); Assert.Equal(new Uri("http://gobbledygook/GetPet1(id=1)"), actual); }
internal void WriteFunctionImportElementHeader(IEdmFunctionImport functionImport) { this.xmlWriter.WriteStartElement("FunctionImport"); this.WriteRequiredAttribute <string>("Name", functionImport.Name, new Func <string, string>(EdmValueWriter.StringAsXml)); this.WriteOptionalAttribute <IEdmTypeReference>("ReturnType", functionImport.ReturnType, new Func <IEdmTypeReference, string>(this.TypeReferenceAsXml)); if (functionImport.IsComposable && functionImport.IsSideEffecting || !functionImport.IsComposable && !functionImport.IsSideEffecting) { this.WriteRequiredAttribute <bool>("IsSideEffecting", functionImport.IsSideEffecting, new Func <bool, string>(EdmValueWriter.BooleanAsXml)); } this.WriteOptionalAttribute <bool>("IsComposable", functionImport.IsComposable, false, new Func <bool, string>(EdmValueWriter.BooleanAsXml)); this.WriteOptionalAttribute <bool>("IsBindable", functionImport.IsBindable, false, new Func <bool, string>(EdmValueWriter.BooleanAsXml)); if (functionImport.EntitySet == null) { return; } else { IEdmEntitySetReferenceExpression entitySet = functionImport.EntitySet as IEdmEntitySetReferenceExpression; if (entitySet == null) { IEdmPathExpression edmPathExpression = functionImport.EntitySet as IEdmPathExpression; if (edmPathExpression == null) { throw new InvalidOperationException(Strings.EdmModel_Validator_Semantic_FunctionImportEntitySetExpressionIsInvalid(functionImport.Name)); } else { this.WriteOptionalAttribute <IEnumerable <string> >("EntitySetPath", edmPathExpression.Path, new Func <IEnumerable <string>, string>(EdmModelCsdlSchemaWriter.PathAsXml)); return; } } else { this.WriteOptionalAttribute <string>("EntitySet", entitySet.ReferencedEntitySet.Name, new Func <string, string>(EdmValueWriter.StringAsXml)); return; } } }
internal void WriteEntitySetReferenceExpressionElement(IEdmEntitySetReferenceExpression expression) { this.xmlWriter.WriteStartElement(CsdlConstants.Element_EntitySetReference); this.WriteRequiredAttribute(CsdlConstants.Attribute_Name, expression.ReferencedEntitySet, EntitySetAsXml); this.WriteEndElement(); }
protected override void ProcessEntitySetReferenceExpression(IEdmEntitySetReferenceExpression expression) { this.schemaWriter.WriteEntitySetReferenceExpressionElement(expression); }
protected virtual void ProcessEntitySetReferenceExpression(IEdmEntitySetReferenceExpression expression) { this.ProcessExpression(expression); }
internal void WriteEntitySetReferenceExpressionElement(IEdmEntitySetReferenceExpression expression) { this.xmlWriter.WriteStartElement("EntitySetReference"); this.WriteRequiredAttribute <IEdmEntitySet>("Name", expression.ReferencedEntitySet, new Func <IEdmEntitySet, string>(EdmModelCsdlSchemaWriter.EntitySetAsXml)); this.WriteEndElement(); }