Exemplo n.º 1
0
        public void Apply_Doesnot_Override_UserConfiguration()
        {
            // Arrange
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            var customers = builder.EntitySet <Customer>("Customers");
            var function  = customers.EntityType.Function("MyFunction").Returns <int>();

            function.HasFunctionLink(ctx => new Uri("http://localhost/FunctionTestWorks"), followsConventions: false);
            FunctionLinkGenerationConvention convention = new FunctionLinkGenerationConvention();

            convention.Apply(function, builder);

            // Act
            IEdmModel model        = builder.GetEdmModel();
            var       edmCustomers = model.EntityContainer.FindEntitySet("Customers");
            var       edmType      = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "Customer");
            var       edmFunction  = model.SchemaElements.OfType <IEdmFunction>().Single(f => f.Name == "MyFunction");

            Assert.NotNull(edmFunction);

            HttpConfiguration configuration = new HttpConfiguration();

            configuration.MapODataServiceRoute(model);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://localhost");

            request.SetConfiguration(configuration);

            FunctionLinkBuilder fuinctionLinkBuilder = model.GetFunctionLinkBuilder(edmFunction);

            var serializerContext = new ODataSerializerContext {
                Model = model, NavigationSource = edmCustomers, Url = request.GetUrlHelper()
            };
            var entityContext = new EntityInstanceContext(serializerContext, edmType.AsReference(), new Customer {
                Id = 109
            });

            // Assert
            Uri link = fuinctionLinkBuilder.BuildFunctionLink(entityContext);

            Assert.Equal("http://localhost/FunctionTestWorks", link.AbsoluteUri);
        }
Exemplo n.º 2
0
        public void Convention_GeneratesUri_ForFunctionBoundToEntity()
        {
            // Arrange
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

            builder.EntitySet <Customer>("Customers");
            var function = builder.EntityType <Customer>().Function("MyFunction").Returns <int>();

            function.Parameter <string>("param");
            IEdmModel model = builder.GetEdmModel();

            // Act
            HttpConfiguration configuration = new HttpConfiguration();

            configuration.MapODataServiceRoute("odata", "odata", model);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://*****:*****@param)",
                         link.AbsoluteUri);
        }