Ejemplo n.º 1
0
        public void SettingBaseType_UpdatesBaseTypeConfigured()
        {
            // Arrange
            ODataModelBuilder        builder        = new ODataModelBuilder();
            ComplexTypeConfiguration derivedComplex = builder.AddComplexType(typeof(DerivedComplexType));
            ComplexTypeConfiguration baseComplex    = builder.AddComplexType(typeof(BaseComplexType));

            // Act
            derivedComplex.DerivesFrom(baseComplex);

            // Assert
            Assert.False(baseComplex.BaseTypeConfigured);
            Assert.True(derivedComplex.BaseTypeConfigured);
        }
        public void RemoveStructuralType_RemovesComplexType()
        {
            ODataModelBuilder builder = new ODataModelBuilder();
            builder.AddComplexType(typeof(Customer));

            Assert.NotEmpty(builder.StructuralTypes);

            builder.RemoveStructuralType(typeof(Customer));
            Assert.Empty(builder.StructuralTypes);
        }
Ejemplo n.º 3
0
        public void BaseTypeConfigured_IsFalseByDefault()
        {
            // Arrange
            ODataModelBuilder builder = new ODataModelBuilder();

            // Act
            ComplexTypeConfiguration derivedComplex = builder.AddComplexType(typeof(DerivedComplexType));

            // Assert
            Assert.False(derivedComplex.BaseTypeConfigured);
        }
Ejemplo n.º 4
0
        public void RemoveStructuralType_RemovesComplexType()
        {
            ODataModelBuilder builder = new ODataModelBuilder();

            builder.AddComplexType(typeof(Customer));

            Assert.NotEmpty(builder.StructuralTypes);

            builder.RemoveStructuralType(typeof(Customer));
            Assert.Empty(builder.StructuralTypes);
        }
Ejemplo n.º 5
0
        private static IEdmTypeConfiguration GetOrAddComplexType(ODataModelBuilder builder, Type type)
        {
            Type collectionType;

            type = GetEnumerableType(type, out collectionType);
            IEdmTypeConfiguration typeConfigurationOrNull = builder.GetTypeConfigurationOrNull(type);

            if (typeConfigurationOrNull == null)
            {
                builder.AddComplexType(type);
                typeConfigurationOrNull = builder.GetTypeConfigurationOrNull(type);
            }
            return(collectionType == null ? typeConfigurationOrNull : new CollectionTypeConfiguration(typeConfigurationOrNull, collectionType));
        }
Ejemplo n.º 6
0
        public void CreateEdmModel_WithSingleton_CanAddBindingPath_ToNavigationProperty_WithComplex()
        {
            // Arrange
            ODataModelBuilder builder = ODataModelBuilderMocks.GetModelBuilderMock <ODataModelBuilder>();

            var motorcycle = builder.AddEntityType(typeof(Motorcycle));
            var myMotor    = builder.AddSingleton("MyMotor", motorcycle);

            var manufacturer = builder.AddComplexType(typeof(MotorcycleManufacturer));
            var address      = builder.AddEntityType(typeof(ManufacturerAddress));

            motorcycle.AddComplexProperty(typeof(Motorcycle).GetProperty("Manufacturer"));
            var navProperty = manufacturer.AddNavigationProperty(typeof(Manufacturer).GetProperty("Address"), EdmMultiplicity.One);

            var addresses = builder.AddEntitySet("Addresses", address);

            myMotor.AddBinding(navProperty, addresses, new List <MemberInfo>
            {
                typeof(Motorcycle).GetProperty("Manufacturer"),
                typeof(Manufacturer).GetProperty("Address")
            });

            // Act
            IEdmModel model = builder.GetEdmModel();

            // Assert
            var motorcycleEdmType = model.AssertHasEntityType(typeof(Motorcycle));

            Assert.Empty(motorcycleEdmType.NavigationProperties());

            var manufacturerEdmType = model.AssertHasComplexType(typeof(MotorcycleManufacturer));

            var edmNavProperty = manufacturerEdmType.AssertHasNavigationProperty(model, "Address",
                                                                                 typeof(ManufacturerAddress), isNullable: false, multiplicity: EdmMultiplicity.One);

            var myMotorSingleton = model.EntityContainer.FindSingleton("MyMotor");

            Assert.NotNull(myMotorSingleton);

            var bindings = myMotorSingleton.FindNavigationPropertyBindings(edmNavProperty);
            var binding  = Assert.Single(bindings);

            Assert.Equal("Address", binding.NavigationProperty.Name);
            Assert.Equal("Addresses", binding.Target.Name);
            Assert.Equal("Manufacturer/Address", binding.Path.Path);
        }