public void ModelBuilder_BindsToTheClosestEntitySet_ForNavigationProperties() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <Vehicle>("vehicles"); builder.EntitySet <CarManufacturer>("car_manufacturers"); builder.EntitySet <MotorcycleManufacturer>("motorcycle_manufacturers"); IEdmModel model = builder.GetEdmModel(); model.AssertHasEntitySet("vehicles", typeof(Vehicle)); IEdmEntitySet vehicles = model.EntityContainers().Single().FindEntitySet("vehicles"); IEdmEntityType car = model.AssertHasEntityType(typeof(Car)); IEdmEntityType motorcycle = model.AssertHasEntityType(typeof(Motorcycle)); IEdmEntityType sportbike = model.AssertHasEntityType(typeof(SportBike)); Assert.Equal(2, vehicles.NavigationTargets.Count()); vehicles.AssertHasNavigationTarget( car.AssertHasNavigationProperty(model, "Manufacturer", typeof(CarManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne), "car_manufacturers"); vehicles.AssertHasNavigationTarget( motorcycle.AssertHasNavigationProperty(model, "Manufacturer", typeof(MotorcycleManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne), "motorcycle_manufacturers"); vehicles.AssertHasNavigationTarget( sportbike.AssertHasNavigationProperty(model, "Manufacturer", typeof(MotorcycleManufacturer), isNullable: true, multiplicity: EdmMultiplicity.ZeroOrOne), "motorcycle_manufacturers"); }
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 CanBuildModelForAnonymousTypes() { Type entityType = new { ID = default(int), ComplexCollection = new[] { new { ComplexProperty = default(string) } }, NavigationCollection = new[] { new { ID = default(int) } } }.GetType(); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.AddEntitySet("entityset", builder.AddEntity(entityType)); IEdmModel model = builder.GetEdmModel(); IEdmEntityType entity = model.AssertHasEntitySet("entityset", entityType); entity.AssertHasKey(model, "ID", EdmPrimitiveTypeKind.Int32); entity.AssertHasCollectionProperty(model, "ComplexCollection", new { ComplexProperty = default(string) }.GetType(), isNullable: true); entity.AssertHasNavigationProperty(model, "NavigationCollection", new { ID = default(int) }.GetType(), isNullable: false, multiplicity: EdmMultiplicity.ZeroOrOne); IEdmComplexType complexType = model.AssertHasComplexType(new { ComplexProperty = default(string) }.GetType()); complexType.AssertHasPrimitiveProperty(model, "ComplexProperty", EdmPrimitiveTypeKind.String, isNullable: true); }
public void ObjectCollectionsAreIgnoredByDefault(Type propertyType) { MockType type = new MockType("entity") .Property <int>("ID") .Property(propertyType, "Collection"); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); var entityType = builder.AddEntity(type); builder.AddEntitySet("entityset", entityType); IEdmModel model = builder.GetEdmModel(); Assert.Equal(2, model.SchemaElements.Count()); var entityEdmType = model.AssertHasEntitySet("entityset", type); }
public void CanMapObjectArrayAsAComplexProperty() { MockType type = new MockType("entity") .Property <int>("ID") .Property <object[]>("Collection"); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); var entityType = builder.AddEntity(type); entityType.AddCollectionProperty(type.GetProperty("Collection")); builder.AddEntitySet("entityset", entityType); IEdmModel model = builder.GetEdmModel(); Assert.Equal(3, model.SchemaElements.Count()); var entityEdmType = model.AssertHasEntitySet("entityset", type); model.AssertHasComplexType(typeof(object)); entityEdmType.AssertHasCollectionProperty(model, "Collection", typeof(object), isNullable: true); }