private ConventionModelMapper CreateModelMapper()
            {
                var modelMapper = new ConventionModelMapper();

                if (_databaseConfiguration != null)
                {
                    var modelBuilder = new ModelConfigurationBuilder();
                    _databaseConfiguration.OnModelCreating(modelBuilder);
                    modelBuilder.Build(modelMapper);
                }

                return(modelMapper);
            }
        public void UseEmptyQuota()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <BuilderTestEntity>()
            .HasTableName("BuilderTest");

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <BuilderTestEntity>();

            tableInfo.Delimiters.Should().Be(Delimiters.Empty);
        }
Example #3
0
        public void UseCurrentTimeGeneratorOnInsert()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <BuilderTestEntity>()
            .Property(p => p.GeneratedValue).UseCurrentTimeValueGenerator(ValueGenerated.OnInsert);

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <BuilderTestEntity>();

            tableInfo.GetColumnInfoByPropertyName("GeneratedValue").ValueGenerated.Should().Be(ValueGenerated.OnInsert);
            tableInfo.GetColumnInfoByPropertyName("GeneratedValue").ValueGenerator.Should().BeOfType <CurrentTimeValueGenerator>();
        }
Example #4
0
        public void DoNotReturnQueryFilterIfWasNotConfigured()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <FooQueryFilter>()
            .HasTableName("Foo");

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <FooQueryFilter>();

            tableInfo.QueryFilter
            .Should().BeNull();
        }
        public void SetNamingQuota()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.UseIdentifierDelimiters(Delimiters.SquareBrackets);
            modelBuilder.Entity <BuilderTestEntity>()
            .HasTableName("BuilderTest");

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <BuilderTestEntity>();

            tableInfo.Delimiters.Should().Be(Delimiters.SquareBrackets);
        }
Example #6
0
        public void BuildConfiguration()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <BuilderTestEntity>()
            .HasTableName("BuilderTest")
            .HasPrimaryKey(f => f.Id).AutoIncrement(AutoIncrementMethodType.Custom)
            .Property(p => p.Address)
            .HasColumnName("COL_ADDRESS")
            .UseConverter <AddressConverter>()
            .Property(p => p.NoMapped).NoMap()
            .Property(p => p.FirstName).HasColumnName("Name")
            .Property(p => p.DateTime).InjectValue(() => DateTime.Now)
            .Property(p => p.GeneratedValue).UseValueGeneratorOnInsert <AutoIncrementValueGenerator>();

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <BuilderTestEntity>();

            var columns = new List <ColumnInfo>()
            {
                new ColumnInfo()
                {
                    Name                    = "Id",
                    IsPrimaryKey            = true,
                    AutoIncrementMethodType = AutoIncrementMethodType.Custom
                },
                new ColumnInfo()
                {
                    Name = "COL_ADDRESS", Converter = new AddressConverter()
                },
                new ColumnInfo()
                {
                    Name = "Name"
                },
                new ColumnInfo()
                {
                    Name = "GeneratedValue", ValueGenerator = new AutoIncrementValueGenerator()
                }
            };
            TableInfo tableInfoExpected = CreateExpectedTableInfo(columns, "BuilderTest");

            AreSame(tableInfo, tableInfoExpected);
            modelMapper.GetInjector <BuilderTestEntity>().IsInjectable("DateTime")
            .Should()
            .BeTrue("DateTime property has injector.");
        }
Example #7
0
        public void UseQueryFilter()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <FooQueryFilter>()
            .HasTableName("Foo");

            modelBuilder.Table("Foo")
            .UseQueryFilter <FooQueryFilter>(f => f.AutorId == 5);

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <FooQueryFilter>();

            tableInfo.QueryFilter
            .Should().NotBeNull();
        }
Example #8
0
        public void UseConverterForAllPropertiesOfSpecifiedType()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <ConvertersEntity>()
            .UseConverterForProperties <int>(new IntConverter())
            .UseConverterForProperties <string, StringConverter1>()
            .Property(p => p.StringPropWithOwnConverter).UseConverter <StringConverter2>()
            .Property(p => p.StringPropWithoutConverter).IgnoreConverter();

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <ConvertersEntity>();

            ColumnInfo intProp1 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.IntProp1));
            ColumnInfo intProp2 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.IntProp1));

            intProp1.Converter
            .Should().BeOfType <IntConverter>()
            .And.Be(intProp2.Converter);

            ColumnInfo stringProp1 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringProp1));
            ColumnInfo stringProp2 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringProp2));
            ColumnInfo stringProp3 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringProp3));
            ColumnInfo stringProp4 = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringProp4));

            stringProp1.Converter
            .Should().BeOfType <StringConverter1>()
            .And.Be(stringProp2.Converter)
            .And.Be(stringProp3.Converter)
            .And.Be(stringProp4.Converter);

            ColumnInfo stringPropWithOwnConverter = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringPropWithOwnConverter));

            stringPropWithOwnConverter.Converter.Should().BeOfType <StringConverter2>();

            ColumnInfo stringPropWithoutConverter = tableInfo.GetColumnInfo(nameof(ConvertersEntity.StringPropWithoutConverter));

            stringPropWithoutConverter.Converter.Should().BeNull();

            tableInfo.GetColumnInfo(nameof(ConvertersEntity.BoolProp)).Converter.Should().BeNull();
            tableInfo.GetColumnInfo(nameof(ConvertersEntity.DateTimeProp)).Converter.Should().BeNull();
        }
Example #9
0
        public void BuildConfigurationWhenRenamePropertyForPrimaryKey()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <Foo>()
            .HasTableName("FooTable")
            .HasPrimaryKey(f => f.FooId).AutoIncrement()
            .Property(p => p.FooId).HasColumnName("RowId");

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <Foo>();

            var columns = new List <ColumnInfo>()
            {
                new ColumnInfo()
                {
                    Name                    = "RowId",
                    IsPrimaryKey            = true,
                    AutoIncrementMethodType = AutoIncrementMethodType.Identity
                },
                new ColumnInfo()
                {
                    Name = "Addresses"
                },
                new ColumnInfo()
                {
                    Name = "FirstName"
                },
                new ColumnInfo()
                {
                    Name = "NoMapped"
                },
                new ColumnInfo()
                {
                    Name = "DateTime"
                }
            };
            TableInfo tableInfoExpected = CreateExpectedTableInfo(columns, "FooTable");

            AreSame(tableInfo, tableInfoExpected);
        }
Example #10
0
        public void BuildConfigurationWhenAutoIncrementMethodTypeIsNotSet()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <Foo>()
            .HasPrimaryKey(f => f.FooId);

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <Foo>();

            var columns = new List <ColumnInfo>()
            {
                new ColumnInfo()
                {
                    Name                    = "FooId",
                    IsPrimaryKey            = true,
                    AutoIncrementMethodType = AutoIncrementMethodType.None
                },
                new ColumnInfo()
                {
                    Name = "Addresses"
                },
                new ColumnInfo()
                {
                    Name = "FirstName"
                },
                new ColumnInfo()
                {
                    Name = "NoMapped"
                },
                new ColumnInfo()
                {
                    Name = "DateTime"
                }
            };
            TableInfo tableInfoExpected = CreateExpectedTableInfo(columns, "Foo");

            AreSame(tableInfo, tableInfoExpected);
        }
Example #11
0
        public void BuildConfigurationForTwoEntities()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            modelBuilder.Entity <Foo>()
            .HasTableName("FooTable")
            .HasPrimaryKey(f => f.FooId).AutoIncrement(AutoIncrementMethodType.Custom)
            .Property(p => p.Addresses)
            .HasColumnName("COL_ADDRESSES")
            .UseConverter <AddressConverter>()
            .Property(p => p.NoMapped).NoMap()
            .Property(p => p.FirstName).HasColumnName("Name")
            .Property(p => p.DateTime).InjectValue(() => DateTime.Now);

            modelBuilder.Entity <Bar>()
            .Property(p => p.FirstName)
            .HasColumnName("GivenName")
            .UseConverter(new UpperCaseConverter());

            modelBuilder.Build(modelMapper);

            TableInfo tableInfo = modelMapper.GetTableInfo <Foo>();

            var columns = new List <ColumnInfo>()
            {
                new ColumnInfo()
                {
                    Name                    = "FooId",
                    IsPrimaryKey            = true,
                    AutoIncrementMethodType = AutoIncrementMethodType.Custom
                },
                new ColumnInfo()
                {
                    Name = "COL_ADDRESSES", Converter = new AddressConverter()
                },
                new ColumnInfo()
                {
                    Name = "Name"
                }
            };
            TableInfo tableInfoFooExpected = CreateExpectedTableInfo(columns, "FooTable");

            AreSame(tableInfo, tableInfoFooExpected);

            TableInfo tableInfoBar = modelMapper.GetTableInfo <Bar>();

            columns = new List <ColumnInfo>()
            {
                new ColumnInfo()
                {
                    Name                    = "Id",
                    IsPrimaryKey            = true,
                    AutoIncrementMethodType = AutoIncrementMethodType.None
                },
                new ColumnInfo()
                {
                    Name = "GivenName", Converter = new UpperCaseConverter()
                },
                new ColumnInfo()
                {
                    Name = "LastName"
                }
            };
            TableInfo tableInfoBarExpected = CreateExpectedTableInfo(columns, "Bar");

            AreSame(tableInfoBar, tableInfoBarExpected);
        }