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); }
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>(); }
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); }
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."); }
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(); }
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(); }
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); }
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); }
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); }