Exemple #1
0
        public async Task Should_not_create_pk_if_specified_in_options()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

            await using var tempTable = await ActDbContext.BulkInsertValuesIntoTempTableAsync(new List <int> { 1 }, new SqlServerTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None });

            var keys = ArrangeDbContext.GetTempTableKeyColumns <TempTable <int> >().ToList();

            keys.Should().HaveCount(0);
        }
Exemple #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));
        }
Exemple #3
0
        public async Task Should_create_pk_by_default()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

            await ActDbContext.BulkInsertValuesIntoTempTableAsync(new List <int> {
                1
            }).ConfigureAwait(false);

            var keys = ArrangeDbContext.GetTempTableKeyColumns <TempTable <int> >().ToList();

            keys.Should().HaveCount(1);
            keys[0].COLUMN_NAME.Should().Be(nameof(TempTable <int> .Column1));
        }
Exemple #4
0
        public async Task Should_not_create_pk_if_entity_is_keyless_and_provider_is_AccordingToEntityTypeConfiguration()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

            await using var tempTable = await ActDbContext.BulkInsertValuesIntoTempTableAsync(new List <int> { 1 }, new SqlServerTempTableBulkInsertOptions
            {
                TableNameProvider  = DefaultTempTableNameProvider.Instance,
                PrimaryKeyCreation = PrimaryKeyPropertiesProviders.EntityTypeConfiguration
            });

            var keys = ArrangeDbContext.GetTempTableKeyColumns <TempTable <int> >().ToList();

            keys.Should().HaveCount(0);
        }
Exemple #5
0
        public async Task Should_insert_string_string()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <string, string>();

            var values = new List <(string, string)> {
                ("value1", null)
            };
            var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, new SqlTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyCreation.None }).ConfigureAwait(false);

            var tempTable = await query.ToListAsync().ConfigureAwait(false);

            tempTable.Should()
            .HaveCount(1).And
            .BeEquivalentTo(new TempTable <string, string>("value1", null));
        }
Exemple #6
0
        public async Task Should_create_pk_by_default()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

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

            var keys = ArrangeDbContext.GetTempTableKeyColumns <TempTable <int> >().ToList();

            keys.Should().HaveCount(1);
            keys[0].COLUMN_NAME.Should().Be(nameof(TempTable <int> .Column1));
        }
Exemple #7
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));
        }
Exemple #8
0
        public async Task Should_insert_nullable_int()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int?>();

            var values = new List <int?> {
                1, null
            };
            var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, new SqlTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyCreation.None }).ConfigureAwait(false);

            var tempTable = await query.ToListAsync().ConfigureAwait(false);

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <int?>(1), new TempTable <int?>(null));
        }
Exemple #9
0
        public async Task Should_insert_int()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

            var values = new List <int> {
                1, 2
            };
            var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values).ConfigureAwait(false);

            var tempTable = await query.ToListAsync().ConfigureAwait(false);

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <int>(1), new TempTable <int>(2));
        }
Exemple #10
0
        public async Task Should_insert_nullable_int_of_a_keyless_entity()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int?>();

            var values = new List <int?> {
                1, null
            };

            await using var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, new SqlServerTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None });

            var tempTable = await query.Query.ToListAsync();

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <int?>(1), new TempTable <int?>(null));
        }
Exemple #11
0
        public async Task Should_insert_string()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <string?>().Property(t => t.Column1).IsRequired(false);

            var values = new List <string?> {
                "value1", null
            };

            await using var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, new SqlServerTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None });

            var tempTable = await query.Query.ToListAsync();

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <string?>("value1"), new TempTable <string?>(null));
        }
Exemple #12
0
        public async Task Should_insert_int_with_streaming_disabled()
        {
            ConfigureModel = builder => builder.ConfigureTempTable <int>();

            var options = new SqlTempTableBulkInsertOptions {
                BulkInsertOptions = { EnableStreaming = false }
            };
            var values = new List <int> {
                1, 2
            };
            var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, options).ConfigureAwait(false);

            var tempTable = await query.ToListAsync().ConfigureAwait(false);

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <int>(1), new TempTable <int>(2));
        }
Exemple #13
0
        public async Task Should_insert_nullable_int_of_entity_with_a_key()
        {
            ConfigureModel = builder =>
            {
                var entityBuilder = builder.ConfigureTempTable <int?>(false);
                entityBuilder.HasKey(t => t.Column1);
                entityBuilder.Property(t => t.Column1).ValueGeneratedNever();
            };

            var values = new List <int?> {
                1, 2
            };

            await using var query = await ActDbContext.BulkInsertValuesIntoTempTableAsync(values, new SqlServerTempTableBulkInsertOptions { PrimaryKeyCreation = PrimaryKeyPropertiesProviders.None });

            var tempTable = await query.Query.ToListAsync();

            tempTable.Should()
            .HaveCount(2).And
            .BeEquivalentTo(new TempTable <int?>(1), new TempTable <int?>(2));
        }