Example #1
0
        public static void DbBulkInsert()
        {
            var inserter     = FastBulkInsertUtil.CreateBulkInserter <D>();
            var dtos         = new[] { d1, d2 };
            var instructions = inserter.BuildInstructionsForRows(dtos);

            Check.That(instructions).CountIs(5);
        }
Example #2
0
        public static void TestCachedInserters()
        {
            var i1 = FastBulkInsertUtil.CreateBulkInserter <D>();

            FastBulkInsertCache.Add(i1);
            Check.ThatCode(() => { FastBulkInsertCache.Add(i1); }).Throws <ArgumentException>();
            var got = FastBulkInsertCache.Get <D>();

            Check.That(got).Equals(i1);
        }
Example #3
0
        public static void TestPropertyNameGeneration()
        {
            var ins = FastBulkInsertUtil.CreateBulkInserter <TestDbEntityWithoutAnnotations>(
                TableMappingRules.UpperSnake("MY_GEN_NAME"));

            Check.That(ins.TableName).Equals("MY_GEN_NAME");
            var f     = new Fixture();
            var ds    = f.CreateMany <TestDbEntityWithoutAnnotations>().ToArray();
            var instr = ins.BuildInstructionsForRows(ds);

            Check.That(instr).HasSize(4);
            Check.That(instr[0].DbParamType).Equals(DbParameterTypeNumbers.Raw);
            Check.That(instr[1].DbParamType).Equals(DbParameterTypeNumbers.NVarChar);
            Check.That(instr[2].DbParamType).Equals(DbParameterTypeNumbers.Date);
            // enum is number
            Check.That(instr[3].DbParamType).Equals(DbParameterTypeNumbers.Number);
        }
Example #4
0
        public static void FastBulkInsert <TEntity>(IReadOnlyList <TEntity> rows, IDbTransaction transaction)
        {
            // warning, oracle specific code
            var bi        = FastBulkInsertUtil.CreateBulkInserter <TEntity>();
            var instr     = bi.BuildInstructionsForRows(rows);
            var tx        = (OracleTransaction)transaction;
            var conn      = (OracleConnection)transaction.Connection;
            var inputLen  = rows.Count;
            var command   = conn.CreateCommand(bi.InsertSql, CommandType.Text);
            var allParams = instr.Select(it =>
            {
                var param = new OracleParameter(it.ParameterName,
                                                (OracleDbType)(int)it.DbParamType,
                                                it.Values,
                                                System.Data.ParameterDirection.Input);
                param.ArrayLength = inputLen;
                return(param);
            }).ToArray();

            command.Parameters.AddRange(allParams);
            command.ExecuteArray(inputLen);
        }
Example #5
0
        public static void TestOwnPropertyRules()
        {
            var rules = new TableMappingRules
            {
                TableName           = "MY_TAB",
                ColumnNameGenerator = pi =>
                {
                    if (pi.Name == "MyString")
                    {
                        // strip this out
                        return(null);
                    }
                    var guessed = TableMappingRules.GuessColumnNameBasedOnPropertyInfo(pi);
                    return(guessed == "MY_DATE" ? "MY_CHANGED_DATE" : guessed);
                }
            };
            var ins =
                FastBulkInsertUtil.CreateBulkInserter <TestDbEntityWithoutAnnotations>(
                    rules);

            Check.That(ins.TableName).Equals("MY_TAB");
            Check.That(ins.Properties).HasSize(3);
            Check.That(ins.Properties[1].DbColumnName).Equals("MY_CHANGED_DATE");
        }