public void CanCallIgnore_MultipleTimes_WithDuplicates() { var builder = new ODataConventionModelBuilder(); builder.Ignore<object>(); builder.Ignore<object>(); builder.Ignore(typeof(object), typeof(object), typeof(object)); Assert.True(builder.IsIgnoredType(typeof(object))); }
private IEdmModel GetModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <SelectExpandTestCustomer>("SelectExpandTestCustomers"); builder.EntitySet <SelectExpandTestOrder>("SelectExpandTestOrders"); builder.Ignore <SelectExpandTestSpecialCustomer>(); builder.Ignore <SelectExpandTestSpecialOrder>(); return(builder.GetEdmModel()); }
private IEdmModel GetModelWithCustomerAlias() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder { ModelAliasingEnabled = true }; builder.EntitySet <SelectExpandTestCustomerWithAlias>("SelectExpandTestCustomersAlias"); builder.EntitySet <SelectExpandTestOrderWithAlias>("SelectExpandTestOrdersAlias"); builder.Ignore <SelectExpandTestSpecialCustomerWithAlias>(); builder.Ignore <SelectExpandTestSpecialOrderWithAlias>(); return(builder.GetEdmModel()); }
public void IgnoreOfT_Should_AddToListOfIgnoredTypes() { var builder = new ODataConventionModelBuilder(); builder.Ignore<object>(); Assert.True(builder.IsIgnoredType(typeof(object))); }
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureWebApi(IAppBuilder app) { var config = new HttpConfiguration(); // Web API routes config.MapHttpAttributeRoutes(); //NB Must come before OData route mapping config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }); // OData: Create the OData model. Here, we're using the convention model builder that will use OData // convention defaults for model creation and routing. ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); // All entity properties should be in lower camel case builder.EnableLowerCamelCase(); // Because PersonSearchHit inherits from SearchHit, we'll ignore it. // This gets around the convention builder's decision to create an entity out of the SearchHit object. builder.Ignore<PersonSearchHit>(); // Create two entity sets: // One for search features and one that will retrieve a given person. builder.EntitySet<IndexSearch>("Search"); builder.EntitySet<Person>("People"); // OData model registration and route creation config.MapODataServiceRoute("ODataRoute", null, builder.GetEdmModel()); // Set up the bearer token that will be required to do OData calls. WebApiConfigBearerToken.Configure(config); app.UseWebApi(config); }
public void ModelBuilder_Ignores_IgnoredTypeAndTheirDerivedTypes() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <Vehicle>("Vehicles"); builder.Ignore <Motorcycle>(); IEdmModel model = builder.GetEdmModel(); // ignore motorcycle, sportbike and MotorcycleManufacturer Assert.Equal(_totalExpectedSchemaTypesForVehiclesModel - 3, model.SchemaElements.Count()); Assert.Equal(1, model.EntityContainers().Single().EntitySets().Count()); model.AssertHasEntitySet("Vehicles", typeof(Vehicle)); var vehicle = model.AssertHasEntityType(typeof(Vehicle)); Assert.Equal(2, vehicle.Key().Count()); Assert.Equal(3, vehicle.Properties().Count()); vehicle.AssertHasKey(model, "Model", EdmPrimitiveTypeKind.Int32); vehicle.AssertHasKey(model, "Name", EdmPrimitiveTypeKind.String); vehicle.AssertHasPrimitiveProperty(model, "WheelCount", EdmPrimitiveTypeKind.Int32, isNullable: false); var car = model.AssertHasEntityType(typeof(Car)); Assert.Equal(vehicle, car.BaseEntityType()); Assert.Equal(2, car.Key().Count()); Assert.Equal(5, car.Properties().Count()); car.AssertHasPrimitiveProperty(model, "SeatingCapacity", EdmPrimitiveTypeKind.Int32, isNullable: false); car.AssertHasNavigationProperty(model, "Manufacturer", typeof(CarManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne); }
public void IgnoreOfT_Should_AddToListOfIgnoredTypes() { var builder = new ODataConventionModelBuilder(); builder.Ignore <object>(); Assert.True(builder.IsIgnoredType(typeof(object))); }
private IEdmModel GetModel() { ODataConventionModelBuilder builder = ODataConventionModelBuilderFactory.Create(); var set = builder.EntitySet <SelectExpandTestCustomer>("SelectExpandTestCustomers"); builder.EntitySet <SelectExpandTestOrder>("SelectExpandTestOrders"); var set2 = builder.EntitySet <SelectExpandTestCustomerWithCustom>("SelectExpandTestCustomerWithCustoms"); builder.Ignore <SelectExpandTestSpecialCustomer>(); builder.Ignore <SelectExpandTestSpecialOrder>(); set.EntityType.Function("GetBestOrders").ReturnsCollectionFromEntitySet <SelectExpandTestOrder>("SelectExpandTestOrders"); set2.EntityType.Function("GetInstanceBestOrders").ReturnsCollectionFromEntitySet <SelectExpandTestOrder>("SelectExpandTestOrders"); set2.EntityType.Function("GetInt").Returns <int>().Parameter <int>("p"); set2.EntityType.Function("ConvertEnum").Returns <int>().Parameter <TestEnum>("p"); builder.EnumType <TestEnum>(); var model = builder.GetEdmModel(); var entityType = model.EntityContainer.EntitySets().First(e => e.Name == "SelectExpandTestCustomerWithCustoms").EntityType() as EdmEntityType; var containerProperty = typeof(SelectExpandTestCustomerWithCustom).GetProperty(nameof(SelectExpandTestCustomerWithCustom.Custom)); var clrProperty = containerProperty.PropertyType.GetProperty(nameof(CustomFields.TestField)); var edmProperty = entityType.AddStructuralProperty("TestField", EdmPrimitiveTypeKind.String, true); model.SetAnnotationValue(edmProperty, new ClrPropertyInfoAnnotation(clrProperty) { PropertiesPath = new List <PropertyInfo>() { containerProperty } }); var modelBound = model.GetAnnotationValue <ModelBoundQuerySettings>(entityType) ?? new ModelBoundQuerySettings(); modelBound.DefaultSelectType = SelectExpandType.Automatic; modelBound.MaxTop = null; // Ensure that system wide settings are respected model.SetAnnotationValue(entityType, modelBound); BoundFunctions.RegisterFunctions(model.SchemaElements.OfType <EdmEnumType>().First(e => e.Name == "TestEnum").ToEdmTypeReference(false)); return(model); }
private static IEdmModel GetSampleModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.ComplexType<Person>(); // Employee is derived from Person. Employee has a property named manager it's Employee type. // It's not allowed to build inheritance complex type because a recursive loop of complex types is not allowed. builder.Ignore<Employee>(); return builder.GetEdmModel(); }
private static IEdmModel GetSampleModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.ComplexType <Person>(); // Employee is derived from Person. Employee has a property named manager it's Employee type. // It's not allowed to build inheritance complex type because a recursive loop of complex types is not allowed. builder.Ignore <Employee>(); return(builder.GetEdmModel()); }
private IEdmModel GetModelWithAutoSelect() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <SelectExpandTestCustomer>("SelectExpandTestCustomers"); builder.EntitySet <SelectExpandTestOrder>("SelectExpandTestOrders"); builder.Ignore <SelectExpandTestSpecialCustomer>(); builder.Ignore <SelectExpandTestSpecialOrder>(); var model = builder.GetEdmModel(); Action <string> enableAutoSelect = (string entityName) => { var entityType = model.EntityContainer.FindEntitySet(entityName).EntityType(); var modelBound = new ModelBoundQuerySettings() { DefaultSelectType = SelectExpandType.Automatic, MaxTop = null // Ensure that system wide settings are respected }; model.SetAnnotationValue(entityType, modelBound); }; enableAutoSelect("SelectExpandTestCustomers"); enableAutoSelect("SelectExpandTestOrders"); return(model); }
public void ModelBuilder_Can_Add_DerivedTypeOfAnIgnoredType() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Vehicle>("Vehicles"); builder.Ignore<Motorcycle>(); builder.Entity<SportBike>(); IEdmModel model = builder.GetEdmModel(); Assert.Equal(_totalExpectedSchemaTypesForVehiclesModel - 1, model.SchemaElements.Count()); Assert.Equal(1, model.EntityContainers().Single().EntitySets().Count()); model.AssertHasEntitySet("Vehicles", typeof(Vehicle)); var vehicle = model.AssertHasEntityType(typeof(Vehicle)); Assert.Equal(2, vehicle.Key().Count()); Assert.Equal(3, vehicle.Properties().Count()); vehicle.AssertHasKey(model, "Model", EdmPrimitiveTypeKind.Int32); vehicle.AssertHasKey(model, "Name", EdmPrimitiveTypeKind.String); vehicle.AssertHasPrimitiveProperty(model, "WheelCount", EdmPrimitiveTypeKind.Int32, isNullable: false); var car = model.AssertHasEntityType(typeof(Car)); Assert.Equal(vehicle, car.BaseEntityType()); Assert.Equal(2, car.Key().Count()); Assert.Equal(5, car.Properties().Count()); car.AssertHasPrimitiveProperty(model, "SeatingCapacity", EdmPrimitiveTypeKind.Int32, isNullable: false); car.AssertHasNavigationProperty(model, "Manufacturer", typeof(CarManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne); var sportbike = model.AssertHasEntityType(typeof(SportBike)); Assert.Equal(vehicle, sportbike.BaseEntityType()); Assert.Equal(2, sportbike.Key().Count()); Assert.Equal(5, sportbike.Properties().Count()); sportbike.AssertHasNavigationProperty(model, "Manufacturer", typeof(MotorcycleManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne); }
private IEdmModel GetModelWithCustomerAlias() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder { ModelAliasingEnabled = true }; builder.EntitySet<SelectExpandTestCustomerWithAlias>("SelectExpandTestCustomersAlias"); builder.EntitySet<SelectExpandTestOrderWithAlias>("SelectExpandTestOrdersAlias"); builder.Ignore<SelectExpandTestSpecialCustomerWithAlias>(); builder.Ignore<SelectExpandTestSpecialOrderWithAlias>(); return builder.GetEdmModel(); }
private IEdmModel GetModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<SelectExpandTestCustomer>("SelectExpandTestCustomers"); builder.EntitySet<SelectExpandTestOrder>("SelectExpandTestOrders"); builder.Ignore<SelectExpandTestSpecialCustomer>(); builder.Ignore<SelectExpandTestSpecialOrder>(); return builder.GetEdmModel(); }