Пример #1
0
        /// <inheritdoc />
        public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Workshop>()
            .HasTableName(WorkshopsTableName)
            .HasPrimaryKey(f => f.Id).AutoIncrement()
            .UseConverterForProperties <string>(NullAndTrimStringConverter.ConvertNull)
            .Property(f => f.CreatedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsert)
            .Property(f => f.LastModifiedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsertOrUpdate)
            .Property(f => f.CreatedBy).UseValueGeneratorOnInsert(new CurrentUserValueGenerator(ServiceProvider))
            .Property(f => f.LastModifiedBy).UseValueGeneratorOnInsertOrUpdate(new CurrentUserValueGenerator(ServiceProvider));

            modelBuilder.Entity <Person>()
            .HasTableName(PeopleTableName)
            .HasPrimaryKey(f => f.Id).AutoIncrement()
            .UseConverterForProperties <string>(NullAndTrimStringConverter.ConvertNull)
            .Property(f => f.CreatedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsert)
            .Property(f => f.LastModifiedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsertOrUpdate)
            .Property(f => f.CreatedBy).UseValueGeneratorOnInsert(new CurrentUserValueGenerator(ServiceProvider))
            .Property(f => f.LastModifiedBy).UseValueGeneratorOnInsertOrUpdate(new CurrentUserValueGenerator(ServiceProvider));

            modelBuilder.Entity <Attendance>()
            .HasTableName(AttendanceTableName)
            .HasPrimaryKey(f => f.Id).AutoIncrement();
        }
Пример #2
0
            public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                modelBuilder.Table("Foo")
                .UseQueryFilter <Foo>(f => f.UserId == 1);
            }
Пример #3
0
 protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
 {
     configurationBuilder
     .Properties <NonEmptyString>()
     .HaveMaxLength(250)
     .HaveConversion <NonEmptyStringValueConverter>();
 }
        public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Photo>()
            .HasTableName("Photos")
            .HasPrimaryKey(p => p.Id).AutoIncrement();
        }
        public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Product>()
            .HasTableName("Products")
            .HasPrimaryKey(p => p.Id).AutoIncrement(AutoIncrementMethodType.Identity);
        }
Пример #6
0
 protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
 {
     configurationBuilder
     .Properties <LaunchRecordId>()
     .HaveConversion <LaunchRecordId.EfCoreValueConverter>();
     configurationBuilder
     .Properties <RocketId>()
     .HaveConversion <RocketId.EfCoreValueConverter>();
 }
Пример #7
0
 /// <summary>
 /// Create database model.
 /// </summary>
 /// <param name="modelBuilder"><see cref="ModelConfigurationBuilder"/></param>
 public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
 {
     modelBuilder.Entity <RRREntityNameRRR_>()
     .HasTableName(RRREntityNameRRR_Plural_TableName)
     .HasPrimaryKey(f => f.Id).AutoIncrement()
     .UseConverterForProperties <string>(NullAndTrimStringConverter.ConvertNull)
     .Property(f => f.CreatedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsert)
     .Property(f => f.LastModifiedTimestamp).UseCurrentTimeValueGenerator(ValueGenerated.OnInsertOrUpdate);
 }
Пример #8
0
        public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Order>()
            .HasTableName("Orders")
            .HasPrimaryKey(p => p.Id).AutoIncrement(AutoIncrementMethodType.Identity)
            .Property(p => p.Items).UseConverter <JsonConverter <List <OrderItem> > >();
        }
Пример #9
0
            public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                modelBuilder.Entity <Bar>()
                .HasTableName("Foo")
                .HasPrimaryKey(p => p.RowId)
                .Property(p => p.RowId).HasColumnName("Id")
                .Property(p => p.Age).HasColumnName("Value");
            }
Пример #10
0
        public static ModelConfigurationBuilder AddStronglyTypedIds(
            this ModelConfigurationBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Properties <EnrollmentId>()
            .HaveConversion(typeof(EnrollmentIdValueConverter), null);
            return(builder);
        }
Пример #11
0
        public void ThrowExceptionWhenMappingTheTheSamePropertyMoreThanOnce()
        {
            Action builderAction = () =>
            {
                var modelBuilder = new ModelConfigurationBuilder();
                modelBuilder.Entity <ConvertersEntity>()
                .Property(p => p.StringProp1).UseConverter <StringConverter2>()
                .Property(p => p.StringProp1).IgnoreConverter();
            };

            builderAction.Should().Throw <InvalidOperationException>();
        }
Пример #12
0
        public void ThrowExceptionWhenUseCurrentTimeGeneratorOnNever()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

            Action act = () =>
                         modelBuilder.Entity <BuilderTestEntity>()
                         .Property(p => p.GeneratedValue)
                         .UseCurrentTimeValueGenerator(ValueGenerated.Never);

            act.Should().Throw <NotSupportedException>();
        }
        protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
        {
            base.ConfigureConventions(configurationBuilder);

            configurationBuilder.Properties <string>()
            //.AreUnicode(false)
            //.AreFixedLength()
            .HaveMaxLength(255);

            configurationBuilder.Properties <decimal>()
            .HavePrecision(5, 2);
        }
            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 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);
        }
Пример #17
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>();
        }
Пример #18
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();
        }
Пример #19
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.");
        }
Пример #20
0
    protected override IModel CreateModel(
        DbContext context,
        IConventionSetBuilder conventionSetBuilder,
        ModelDependencies modelDependencies)
    {
        var modelConfigurationBuilder = new ModelConfigurationBuilder(conventionSetBuilder.CreateConventionSet());

        _configureConventions?.Invoke(modelConfigurationBuilder);
        var modelBuilder = modelConfigurationBuilder.CreateModelBuilder(modelDependencies);

        Dependencies.ModelCustomizer.Customize(modelBuilder, context);

        _onModelCreating(modelBuilder, context);

        return(modelBuilder.FinalizeModel());
    }
Пример #21
0
        public void ThrowExceptionWhenTryConfigureQueryFilterMoreTimesForOneTable()
        {
            var modelBuilder = new ModelConfigurationBuilder();
            var modelMapper  = new ConventionModelMapper();

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

            Action action = ()
                            => modelBuilder.Table("Foo")
                            .UseQueryFilter <FooQueryFilter>(f => f.Id > 2);

            action
            .Should()
            .Throw <InvalidOperationException>()
            .WithMessage("*Foo*");
        }
Пример #22
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();
        }
Пример #23
0
        protected override void ConfigureConventions(ModelConfigurationBuilder builder)
        {
            builder.Properties <DateOnly>()
            .HaveConversion <DateOnlyConverter>()
            .HaveColumnType("date");

            builder.Properties <TimeOnly>()
            .HaveConversion <TimeOnlyConverter>()
            .HaveColumnType("date");

            builder.Properties <DateOnly?>()
            .HaveConversion <NullableDateOnlyConverter>()
            .HaveColumnType("date");

            builder.Properties <TimeOnly?>()
            .HaveConversion <NullableTimeOnlyConverter>()
            .HaveColumnType("date");
        }
Пример #24
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();
        }
Пример #25
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);
        }
Пример #26
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);
        }
Пример #27
0
            public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                modelBuilder.Table("Foo")
                .UseQueryFilter <Foo>(f => f.Value > 2);

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

                modelBuilder.Entity <Bar>()
                .HasTableName("Bars");

                modelBuilder.Table("Bars").UseQueryFilter <Bar>(b => b.Value.StartsWith("Slov"));

                modelBuilder.Table("FooBar")
                .UseQueryFilter <FooBar>(f => f.Value > GetValue());

                modelBuilder.Table("ComplexCondition")
                .UseQueryFilter <ComplexCondition>(f => (f.Value > 1 && f.Value < 1000) || f.Id > 0);
            }
Пример #28
0
        protected override void OnBuild(ModelConfigurationBuilder <TestEntity, TestModel> builder)
        {
            builder.EntityProperty(entity => entity.Id)
            .HasModelProperty(model => model.Id);

            builder.EntityProperty(entity => entity.Name)
            .HasModelProperty(model => model.Name);

            builder.EntityProperty(entity => entity.Email)
            .HasModelProperty(model => model.Email);

            builder.EntityProperty(entity => entity.Birthdate)
            .HasModelProperty(model => model.Birthdate);

            builder.ModelProperty(model => model.Age)
            .ModelOnly()
            .GetEntityValue(entity => new DateTime(DateTime.Today.Subtract(entity.Birthdate).Ticks).Year);

            builder.ModelProperty(model => model.CreatedAt)
            .HasEntityProperty(entity => entity.CreatedAt)
            .IsModelOnly();
        }
Пример #29
0
 protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
 {
     configurationBuilder.Properties <DateTime>().HaveConversion <long>();
 }
Пример #30
0
 public override void OnModelCreating(ModelConfigurationBuilder modelBuilder)
 {
     base.OnModelCreating(modelBuilder);
     modelBuilder.UseIdentifierDelimiters(_quota);
 }