/// <summary> /// Creates and adds a function import to this entity container. /// </summary> /// <param name="name">Name of the function import.</param> /// <param name="returnType">Return type of the function import.</param> /// <param name="entitySet">An entity set containing entities returned by this function import. /// The two expression kinds supported are <see cref="IEdmEntitySetReferenceExpression"/> and <see cref="IEdmPathExpression"/>.</param> /// <param name="sideEffecting">A value indicating whether this function import has side-effects.</param> /// <param name="composable">A value indicating whether this functon import can be composed inside expressions.</param> /// <param name="bindable">A value indicating whether this function import can be used as an extension method for the type of the first parameter of this function import.</param> /// <returns>Created function import.</returns> public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType, IEdmExpression entitySet, bool sideEffecting, bool composable, bool bindable) { EdmFunctionImport functionImport = new EdmFunctionImport(this, name, returnType, entitySet, sideEffecting, composable, bindable); this.AddElement(functionImport); return(functionImport); }
public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType) { EdmFunctionImport edmFunctionImport = new EdmFunctionImport(this, name, returnType); this.AddElement(edmFunctionImport); return(edmFunctionImport); }
/// <summary> /// Creates and adds a function import to this entity container. /// </summary> /// <param name="name">Name of the function import.</param> /// <param name="returnType">Return type of the function import.</param> /// <param name="entitySet">An entity set containing entities returned by this function import. /// The two expression kinds supported are <see cref="IEdmEntitySetReferenceExpression"/> and <see cref="IEdmPathExpression"/>.</param> /// <returns>Created function import.</returns> public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType, IEdmExpression entitySet) { EdmFunctionImport functionImport = new EdmFunctionImport(this, name, returnType, entitySet); this.AddElement(functionImport); return(functionImport); }
public void GetActionLinkBuilder_ReturnsDefaultActionLinkBuilder_IfNotSet() { // Arrange IEdmModel model = new EdmModel(); IEdmEntityContainer container = new EdmEntityContainer("NS", "Container"); IEdmFunctionImport action = new EdmFunctionImport(container, "Action", returnType: null); Assert.NotNull(model.GetActionLinkBuilder(action)); }
private static void AddProcedures(this IEdmModel model, IEnumerable<ProcedureConfiguration> configurations, EdmEntityContainer container, Dictionary<Type, IEdmStructuredType> edmTypeMap, Dictionary<string, EdmEntitySet> edmEntitySetMap) { foreach (ProcedureConfiguration procedure in configurations) { switch (procedure.Kind) { case ProcedureKind.Action: ActionConfiguration action = procedure as ActionConfiguration; IEdmTypeReference returnReference = GetEdmTypeReference(edmTypeMap, action.ReturnType, nullable: true); IEdmExpression expression = GetEdmEntitySetExpression(edmEntitySetMap, action); EdmFunctionImport functionImport = new EdmFunctionImport(container, action.Name, returnReference, expression, action.IsSideEffecting, action.IsComposable, action.IsBindable); if (action.IsBindable) { model.SetIsAlwaysBindable(functionImport, action.IsAlwaysBindable); if (action.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity) { Func<EntityInstanceContext, Uri> actionFactory = action.GetActionLink(); if (actionFactory != null) { model.SetAnnotationValue<ActionLinkBuilder>(functionImport, new ActionLinkBuilder(actionFactory)); } } } foreach (ParameterConfiguration parameter in action.Parameters) { // TODO: http://aspnetwebstack.codeplex.com/workitem/417 bool isParameterOptional = EdmLibHelpers.IsNullable(parameter.TypeConfiguration.ClrType); IEdmTypeReference parameterTypeReference = GetEdmTypeReference(edmTypeMap, parameter.TypeConfiguration, nullable: isParameterOptional); EdmFunctionParameter functionParameter = new EdmFunctionParameter(functionImport, parameter.Name, parameterTypeReference, EdmFunctionParameterMode.In); functionImport.AddParameter(functionParameter); } container.AddElement(functionImport); break; case ProcedureKind.Function: Contract.Assert(false, "Functions are not supported."); break; case ProcedureKind.ServiceOperation: Contract.Assert(false, "ServiceOperations are not supported."); break; } } }
private static void AddProcedures(this EdmEntityContainer container, IEnumerable<ProcedureConfiguration> configurations, Dictionary<string, IEdmStructuredType> edmTypeMap, Dictionary<string, EdmEntitySet> edmEntitySetMap) { foreach (ProcedureConfiguration procedure in configurations) { switch (procedure.Kind) { case ProcedureKind.Action: ActionConfiguration action = procedure as ActionConfiguration; IEdmTypeReference returnReference = GetEdmTypeReference(edmTypeMap, action.ReturnType, nullable: true); IEdmExpression expression = GetEdmEntitySetExpression(edmEntitySetMap, action); EdmFunctionImport functionImport = new EdmFunctionImport(container, action.Name, returnReference, expression, action.IsSideEffecting, action.IsComposable, action.IsBindable); foreach (ParameterConfiguration parameter in action.Parameters) { // TODO: http://aspnetwebstack.codeplex.com/workitem/417 IEdmTypeReference parameterTypeReference = GetEdmTypeReference(edmTypeMap, parameter.TypeConfiguration, nullable: true); EdmFunctionParameter functionParameter = new EdmFunctionParameter(functionImport, parameter.Name, parameterTypeReference, EdmFunctionParameterMode.In); functionImport.AddParameter(functionParameter); } container.AddElement(functionImport); break; case ProcedureKind.Function: Contract.Assert(false, "Functions are not supported."); break; case ProcedureKind.ServiceOperation: Contract.Assert(false, "ServiceOperations are not supported."); break; } } }
public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType) { EdmFunctionImport edmFunctionImport = new EdmFunctionImport(this, name, returnType); this.AddElement(edmFunctionImport); return edmFunctionImport; }
public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType, IEdmExpression entitySet, bool sideEffecting, bool composable, bool bindable) { EdmFunctionImport edmFunctionImport = new EdmFunctionImport(this, name, returnType, entitySet, sideEffecting, composable, bindable); this.AddElement(edmFunctionImport); return edmFunctionImport; }
/// <summary> /// Creates and adds a function import to this entity container. /// </summary> /// <param name="name">Name of the function import.</param> /// <param name="returnType">Return type of the function import.</param> /// <param name="entitySet">An entity set containing entities returned by this function import. /// The two expression kinds supported are <see cref="IEdmEntitySetReferenceExpression"/> and <see cref="IEdmPathExpression"/>.</param> /// <returns>Created function import.</returns> public virtual EdmFunctionImport AddFunctionImport(string name, IEdmTypeReference returnType, IEdmExpression entitySet) { EdmFunctionImport functionImport = new EdmFunctionImport(this, name, returnType, entitySet); this.AddElement(functionImport); return functionImport; }