public static void DbBulkInsert() { var inserter = FastBulkInsertUtil.CreateBulkInserter <D>(); var dtos = new[] { d1, d2 }; var instructions = inserter.BuildInstructionsForRows(dtos); Check.That(instructions).CountIs(5); }
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); }
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); }
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); }
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"); }