public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            FunctionConfiguration function = configuration as FunctionConfiguration;

            if (function == null || !function.IsBindable)
            {
                return;
            }

            // You only need to create links for bindable functions that bind to a single entity.
            if (function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && function.GetFunctionLink() == null)
            {
                string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;

                function.HasFunctionLink(entityContext =>
                                         entityContext.GenerateFunctionLink(bindingParamterType, function.FullyQualifiedName, function.Parameters.Select(p => p.Name)),
                                         followsConventions: true);
            }
            else if (function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Collection && function.GetFeedFunctionLink() == null)
            {
                if (((CollectionTypeConfiguration)function.BindingParameter.TypeConfiguration).ElementType.Kind ==
                    EdmTypeKind.Entity)
                {
                    string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;
                    function.HasFeedFunctionLink(
                        feedContext =>
                        feedContext.GenerateFunctionLink(bindingParamterType, function.FullyQualifiedName, function.Parameters.Select(p => p.Name)),
                        followsConventions: true);
                }
            }
        }
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            FunctionConfiguration function = configuration as FunctionConfiguration;

            if (function == null || !function.IsBindable)
            {
                return;
            }

            // You only need to create links for bindable functions that bind to a single entity.
            if (function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && function.GetFunctionLink() == null)
            {
                string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;

                function.HasFunctionLink(entityContext => 
                    entityContext.GenerateFunctionLink(bindingParamterType, function.FullyQualifiedName, function.Parameters.Select(p => p.Name)), 
                    followsConventions: true);
            }
            else if (function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Collection && function.GetFeedFunctionLink() == null)
            {
                if (((CollectionTypeConfiguration)function.BindingParameter.TypeConfiguration).ElementType.Kind ==
                    EdmTypeKind.Entity)
                {
                    string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;
                    function.HasFeedFunctionLink(
                        feedContext =>
                            feedContext.GenerateFunctionLink(bindingParamterType, function.FullyQualifiedName, function.Parameters.Select(p => p.Name)),
                        followsConventions: true);
                }
            }
        }
        protected override void Setup(ProcedureConfiguration <School> configuration)
        {
            configuration.ProcedureName = "SomeSPName";
            configuration.Input.Maps(v => v.SchoolId).Max(2).HasParameterName("Hamba");
            configuration.Input.Maps(v => v.SchoolName).Required();

            //configuration.Output<School>.Maps(v => v.SchoolName).Required();
        }
Пример #4
0
        protected override void Setup(ProcedureConfiguration <ResourceSummary> configuration)
        {
            configuration.ProcedureName = "InsertResourceSummaryDetails";
            var SpReturn = configuration.CanReturnCollectionOf <ResourceSummary>();

            SpReturn.Maps(v => v.EmployerDistrict).HasParameterName("EmployerDisctrict");
            SpReturn.Maps(v => v.MobileNo).HasParameterName("ModileNo");
        }
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            ActionConfiguration action = configuration as ActionConfiguration;

            // You only need to create links for bindable actions that bind to a single entity.
            if (action != null && action.IsBindable && action.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && action.GetActionLink() == null)
            {
                action.HasActionLink(entityContext => GenerateActionLink(entityContext, action));
            }
        }
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            ActionConfiguration action = configuration as ActionConfiguration;

            // You only need to create links for bindable actions that bind to a single entity.
            if (action != null && action.IsBindable && action.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && action.GetActionLink() == null)
            {
                action.HasActionLink(entityContext => GenerateActionLink(entityContext, action));
            }
        }
 protected override void Setup(ProcedureConfiguration <ResourceSummary> configuration)
 {
     configuration.Mock          = true;
     configuration.ProcedureName = "InsertResourceSummary";
     //configuration.ConnectionString = "Data Source=PIS03CDIVDISS33;Initial Catalog=PerformanceTestDb;Integrated Security=True;Connection Timeout=60;Min Pool Size=20; Max Pool Size=500;";
     configuration.Input.Maps(v => v.PersonId).Out();
     configuration.Input.Maps(v => v.PersonName).Required().MinLength(1).MaxLength(50);
     configuration.Input.Maps(v => v.EmailAddress).Required().MaxLength(50);
     configuration.Input.Maps(v => v.MobileNo).Required().MaxLength(50);
     configuration.Input.Maps(v => v.Country).MaxLength(50);
 }
Пример #8
0
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            ActionConfiguration action = configuration as ActionConfiguration;

            // You only need to create links for bindable actions that bind to a single entity.
            if (action != null && action.IsBindable && action.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && action.GetActionLink() == null)
            {
                string bindingParamterType = action.BindingParameter.TypeConfiguration.FullName;
                action.HasActionLink(entityContext => entityContext.GenerateActionLink(bindingParamterType, action.Name), followsConventions: true);
            }
        }
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            FunctionConfiguration function = configuration as FunctionConfiguration;

            // You only need to create links for bindable functions that bind to a single entity.
            if (function != null && function.IsBindable && function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && function.GetFunctionLink() == null)
            {
                string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;

                function.HasFunctionLink(entityContext => 
                    entityContext.GenerateFunctionLink(bindingParamterType, function.Name, function.Parameters.Select(p => p.Name)), 
                    followsConventions: true);
            }
        }
Пример #10
0
        public void Apply(ProcedureConfiguration configuration, ODataModelBuilder model)
        {
            FunctionConfiguration function = configuration as FunctionConfiguration;

            // You only need to create links for bindable functions that bind to a single entity.
            if (function != null && function.IsBindable && function.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity && function.GetFunctionLink() == null)
            {
                string bindingParamterType = function.BindingParameter.TypeConfiguration.FullName;

                function.HasFunctionLink(entityContext =>
                                         entityContext.GenerateFunctionLink(bindingParamterType, function.Name, function.Parameters.Select(p => p.Name)),
                                         followsConventions: true);
            }
        }
Пример #11
0
 private static void AddProcedureParameters(EdmOperation operation, ProcedureConfiguration procedure, Dictionary<Type, IEdmType> edmTypeMap)
 {
     foreach (ParameterConfiguration parameter in procedure.Parameters)
     {
         bool isParameterOptional = parameter.OptionalParameter;
         IEdmTypeReference parameterTypeReference = GetEdmTypeReference(edmTypeMap, parameter.TypeConfiguration, nullable: isParameterOptional);
         IEdmOperationParameter operationParameter = new EdmOperationParameter(operation, parameter.Name, parameterTypeReference);
         operation.AddParameter(operationParameter);
     }
 }
Пример #12
0
 protected override void Setup(ProcedureConfiguration <SpHelloWorldParams> configuration)
 {
     configuration.ConnectionString = "Data Source=.;Initial Catalog=SQLML;Integrated Security=True;";
     configuration.Input.Maps(v => v.MyMessage).Out();
 }
Пример #13
0
 protected override void Setup(ProcedureConfiguration <SPSelectAdjustmentsParams> configuration)
 {
     configuration.ConnectionString = "Data Source=.;Initial Catalog=Steven_Singer_db;Integrated Security=True;";
     configuration.ProcedureName    = "SPSelectAdjustments";
     configuration.CanReturnCollectionOf <Steven_Singer_ADJUSTMENTS>().Maps(v => v.SKU_NO).Email();
 }
Пример #14
0
 protected override void Setup(ProcedureConfiguration <AllTypeParams> configuration)
 {
     configuration.Mock = true;
     configuration.Input.Maps(v => v.Id).Min(1);
     configuration.Input.Maps(v => v.RowChanged).Out();
 }
        private static void AddProcedure(
            this IEdmModel model,
            ProcedureConfiguration procedure,
            EdmEntityContainer container,
            Dictionary<Type, IEdmType> edmTypeMap,
            Dictionary<string, EdmEntitySet> edmEntitySetMap,
            bool isAction)
        {
            IEdmTypeReference returnReference = GetEdmTypeReference(
                edmTypeMap, 
                procedure.ReturnType,
                procedure.ReturnType != null && EdmLibHelpers.IsNullable(procedure.ReturnType.ClrType));
            IEdmExpression expression = GetEdmEntitySetExpression(edmEntitySetMap, procedure);
            IEdmPathExpression pathExpression = procedure.EntitySetPath != null
                ? new EdmPathExpression(procedure.EntitySetPath)
                : null;

            EdmOperation operation;
            EdmOperationImport operationImport;
            if (isAction)
            {
                EdmAction action = new EdmAction(
                    container.Namespace, procedure.Name, returnReference, procedure.IsBindable, pathExpression);
                operation = action;
                operationImport = new EdmActionImport(container, procedure.Name, action, expression);
            }
            else
            {
                EdmFunction function = new EdmFunction(
                    container.Namespace,
                    procedure.Name,
                    returnReference,
                    procedure.IsBindable,
                    pathExpression,
                    procedure.IsComposable);
                operation = function;
                FunctionConfiguration functionConfig = (FunctionConfiguration)procedure;
                operationImport = new EdmFunctionImport(
                    container, procedure.Name, function, expression, functionConfig.IncludeInServiceDocument);
            }

            AddProcedureParameters(operation, procedure, edmTypeMap);
            if (procedure.IsBindable)
            {
                model.SetIsAlwaysBindable(operation, procedure.IsAlwaysBindable);
                AddProcedureLinkBuilder(model, operation, procedure);
                ValidateProcedureEntitySetPath(model, operationImport, procedure);
            }
            else
            {
                container.AddElement(operationImport);
            }

            EdmModel edmModel = model as EdmModel;
            if (edmModel != null)
            {
                edmModel.AddElement(operation);
            }
        }
Пример #16
0
 private static EdmOperationImport CreateActionImport(
     ProcedureConfiguration procedure,
     EdmEntityContainer container,
     IEdmTypeReference returnReference,
     IEdmExpression expression,
     IEdmPathExpression pathExpression)
 {
     EdmAction operation = new EdmAction(
         container.Namespace,
         procedure.Name,
         returnReference,
         procedure.IsBindable,
         pathExpression);
     return new EdmActionImport(container, procedure.Name, operation, expression);
 }
Пример #17
0
 private static void AddProcedureLinkBuilder(IEdmModel model, IEdmOperation operation, ProcedureConfiguration procedure)
 {
     if (procedure.BindingParameter.TypeConfiguration.Kind == EdmTypeKind.Entity)
     {
         ActionConfiguration actionConfiguration = procedure as ActionConfiguration;
         IEdmAction action = operation as IEdmAction;
         FunctionConfiguration functionConfiguration = procedure as FunctionConfiguration;
         IEdmFunction function = operation as IEdmFunction;
         if (actionConfiguration != null && actionConfiguration.GetActionLink() != null && action != null)
         {
             model.SetActionLinkBuilder(
                 action,
                 new ActionLinkBuilder(actionConfiguration.GetActionLink(), actionConfiguration.FollowsConventions));
         }
         else if (functionConfiguration != null && functionConfiguration.GetFunctionLink() != null && function != null)
         {
             model.SetFunctionLinkBuilder(
                 function,
                 new FunctionLinkBuilder(functionConfiguration.GetFunctionLink(), functionConfiguration.FollowsConventions));
         }
     }
 }
Пример #18
0
 public override void AddProcedure(ProcedureConfiguration procedure)
 {
     procedure.Namespace = Namespace;
     base.AddProcedure(procedure);
 }
Пример #19
0
 protected override void Setup(ProcedureConfiguration <Resource> configuration)
 {
     configuration.ProcedureName = "InsertResourceSummary2";
     //configuration.ConnectionString = "Data Source=PIS03CDIVDISS33;Initial Catalog=PerformanceTestDb;Integrated Security=True;";
 }
Пример #20
0
 private static void ValidateProcedureEntitySetPath(IEdmModel model, IEdmOperationImport operationImport, ProcedureConfiguration procedure)
 {
     IEdmOperationParameter procedureParameter;
     IEnumerable<IEdmNavigationProperty> navPath;
     IEnumerable<EdmError> edmErrors;
     if (procedure.EntitySetPath != null && !operationImport.TryGetRelativeEntitySetPath(model, out procedureParameter, out navPath, out edmErrors))
     {
         throw Error.InvalidOperation(SRResources.ProcedureHasInvalidEntitySetPath, String.Join("/", procedure.EntitySetPath), procedure.FullyQualifiedName);
     }
 }
 private static void AddProcedureParameters(EdmOperation operation, ProcedureConfiguration procedure, Dictionary<Type, IEdmType> edmTypeMap)
 {
     foreach (ParameterConfiguration parameter in procedure.Parameters)
     {
         // TODO: http://aspnetwebstack.codeplex.com/workitem/417
         bool isParameterOptional = EdmLibHelpers.IsNullable(parameter.TypeConfiguration.ClrType);
         IEdmTypeReference parameterTypeReference = GetEdmTypeReference(edmTypeMap, parameter.TypeConfiguration, nullable: isParameterOptional);
         IEdmOperationParameter operationParameter = new EdmOperationParameter(operation, parameter.Name, parameterTypeReference);
         operation.AddParameter(operationParameter);
     }
 }
Пример #22
0
        private static IEdmExpression GetEdmEntitySetExpression(IDictionary<string, EdmNavigationSource> navigationSources, ProcedureConfiguration procedure)
        {
            if (procedure.NavigationSource != null)
            {
                EdmNavigationSource navigationSource;
                if (navigationSources.TryGetValue(procedure.NavigationSource.Name, out navigationSource))
                {
                    EdmEntitySet entitySet = navigationSource as EdmEntitySet;
                    if (entitySet != null)
                    {
                        return new EdmEntitySetReferenceExpression(entitySet);
                    }
                }
                else
                {
                    throw Error.InvalidOperation(SRResources.EntitySetNotFoundForName, procedure.NavigationSource.Name);
                }
            }
            else if (procedure.EntitySetPath != null)
            {
                return new EdmPathExpression(procedure.EntitySetPath);
            }

            return null;
        }
        private static IEdmExpression GetEdmEntitySetExpression(Dictionary<string, EdmEntitySet> entitySets, ProcedureConfiguration procedure)
        {
            if (procedure.EntitySet != null)
            {
                if (entitySets.ContainsKey(procedure.EntitySet.Name))
                {
                    EdmEntitySet entitySet = entitySets[procedure.EntitySet.Name];
                    return new EdmEntitySetReferenceExpression(entitySet);
                }
                else
                {
                    throw Error.InvalidOperation(SRResources.EntitySetNotFoundForName, procedure.EntitySet.Name);
                }
            }
            else if (procedure.EntitySetPath != null)
            {
                return new EdmPathExpression(procedure.EntitySetPath);
            }

            return null;
        }