コード例 #1
0
        public async Task Should_create_temp_table_without_primary_key()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();
            _optionsWithNonUniqueName.PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None;

            await using var tempTable = await SUT.CreateTempTableAsync(ActDbContext.GetEntityType <TempTable <int> >(), _optionsWithNonUniqueName);

            var constraints = await AssertDbContext.GetTempTableKeyColumns <TempTable <int> >().ToListAsync();

            constraints.Should().BeEmpty();
        }
コード例 #2
0
        public async Task Should_create_pk_by_default_on_string_column()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <string>().Property(t => t.Column1).HasMaxLength(100).IsRequired();

            await ActDbContext.BulkInsertValuesIntoTempTableAsync(new List <string> {
                "value"
            }).ConfigureAwait(false);

            var keys = AssertDbContext.GetTempTableKeyColumns <TempTable <string> >().ToList();

            keys.Should().HaveCount(1);
            keys[0].COLUMN_NAME.Should().Be(nameof(TempTable <string> .Column1));
        }
コード例 #3
0
        public async Task Should_create_pk_by_default_on_string_column()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <string>().Property(t => t.Column1).HasMaxLength(100).IsRequired();

            await using var tempTable = await ActDbContext.BulkInsertValuesIntoTempTableAsync(new List <string> { "value" }, new SqlServerTempTableBulkInsertOptions
            {
                TableNameProvider  = DefaultTempTableNameProvider.Instance,
                PrimaryKeyCreation = PrimaryKeyPropertiesProviders.AdaptiveForced
            });

            var keys = AssertDbContext.GetTempTableKeyColumns <TempTable <string> >().ToList();

            keys.Should().HaveCount(1);
            keys[0].COLUMN_NAME.Should().Be(nameof(TempTable <string> .Column1));
        }
コード例 #4
0
        public async Task Should_create_pk_if_options_flag_is_set()
        {
            _optionsWithNonUniqueName.PrimaryKeyCreation = PrimaryKeyPropertiesProviders.AdaptiveForced;

            ConfigureModel = builder => builder.ConfigureTempTable <int, string>().Property(s => s.Column2).HasMaxLength(100);

            // ReSharper disable once RedundantArgumentDefaultValue
            await using var tempTable = await SUT.CreateTempTableAsync(ActDbContext.GetEntityType <TempTable <int, string> >(), _optionsWithNonUniqueName);

            var keyColumns = await AssertDbContext.GetTempTableKeyColumns <TempTable <int, string> >().ToListAsync();

            keyColumns.Should().HaveCount(2);
            keyColumns[0].Name.Should().Be(nameof(TempTable <int, string> .Column1));
            keyColumns[1].Name.Should().Be(nameof(TempTable <int, string> .Column2));
        }
        public async Task Should_create_primary_key_for_entityType()
        {
            var tableName = await ArrangeDbContext.CreateTempTableAsync <TestEntity>();

            await _sut.CreatePrimaryKeyAsync(ActDbContext, ActDbContext.GetEntityType <TestEntity>(), tableName);

            var constraints = await AssertDbContext.GetTempTableConstraints <TestEntity>().ToListAsync();

            constraints.Should().HaveCount(1)
            .And.Subject.First().CONSTRAINT_TYPE.Should().Be("PRIMARY KEY");

            var keyColumns = await AssertDbContext.GetTempTableKeyColumns <TestEntity>().ToListAsync();

            keyColumns.Should().HaveCount(1)
            .And.Subject.First().COLUMN_NAME.Should().Be(nameof(TestEntity.Id));
        }
コード例 #6
0
        public async Task Should_not_throw_if_some_pk_columns_are_missing_and_provider_is_Adaptive()
        {
            _optionsWithNonUniqueName.PrimaryKeyCreation = PrimaryKeyPropertiesProviders.AdaptiveForced;
            _optionsWithNonUniqueName.MembersToInclude   = EntityMembersProvider.From <CustomTempTable>(t => t.Column1);

            ConfigureModel = builder =>
            {
                var entity = builder.ConfigureTempTableEntity <CustomTempTable>(false);
                entity.Property(s => s.Column2).HasMaxLength(100);
                entity.HasKey(s => new { s.Column1, s.Column2 });
            };

            // ReSharper disable once RedundantArgumentDefaultValue
            await using var tempTable = await SUT.CreateTempTableAsync(ActDbContext.GetEntityType <CustomTempTable>(), _optionsWithNonUniqueName);

            var keyColumns = await AssertDbContext.GetTempTableKeyColumns <CustomTempTable>().ToListAsync();

            keyColumns.Should().HaveCount(1);
            keyColumns[0].COLUMN_NAME.Should().Be(nameof(CustomTempTable.Column1));
        }
コード例 #7
0
        public async Task Should_create_primary_key_for_entityType()
        {
            await using var tempTableReference = await ArrangeDbContext.CreateTempTableAsync <TestEntity>(new TempTableCreationOptions
            {
                TableNameProvider  = DefaultTempTableNameProvider.Instance,
                PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None
            });

            var entityType = ActDbContext.GetEntityType <TestEntity>();
            await SUT.CreatePrimaryKeyAsync(ActDbContext, PrimaryKeyPropertiesProviders.AdaptiveForced.GetPrimaryKeyProperties(entityType, entityType.GetProperties().ToList()), tempTableReference.Name);

            var constraints = await AssertDbContext.GetTempTableConstraints <TestEntity>().ToListAsync();

            constraints.Should().HaveCount(1)
            .And.Subject.First().CONSTRAINT_TYPE.Should().Be("PRIMARY KEY");

            var keyColumns = await AssertDbContext.GetTempTableKeyColumns <TestEntity>().ToListAsync();

            keyColumns.Should().HaveCount(1)
            .And.Subject.First().COLUMN_NAME.Should().Be(nameof(TestEntity.Id));
        }