示例#1
0
        public override string Generate(InsertDataExpression expression)
        {
            List <string> columnNames   = new List <string>();
            List <string> columnValues  = new List <string>();
            List <string> insertStrings = new List <string>();

            foreach (InsertionDataDefinition row in expression.Rows)
            {
                columnNames.Clear();
                columnValues.Clear();
                foreach (KeyValuePair <string, object> item in row)
                {
                    columnNames.Add(Quoter.QuoteColumnName(item.Key));
                    columnValues.Add(Quoter.QuoteValue(item.Value));
                }

                string columns = String.Join(", ", columnNames.ToArray());
                string values  = String.Join(", ", columnValues.ToArray());
                insertStrings.Add(String.Format(InsertData
                                                , Quoter.QuoteSchemaName(expression.SchemaName)
                                                , Quoter.QuoteTableName(expression.TableName)
                                                , columns
                                                , values));
            }
            return(String.Join("; ", insertStrings.ToArray()));
        }
示例#2
0
        public void CanInsertBinaryData()
        {
            var expression = new InsertDataExpression
            {
                TableName = "TestTable1"
            };

            var row1 = new { Id = 1, Name = "Just'in", Value = Encoding.ASCII.GetBytes("Just'in") };
            var row2 = new { Id = 1, Name = "Na\te", Value = Encoding.ASCII.GetBytes("Na\te") };

            expression.Rows.AddRange(new IDataDefinition[]
            {
                new ReflectedDataDefinition(row1),
                new ReflectedDataDefinition(row2)
            }
                                     );

            var sql = generator.Generate(expression);

            var expected = "INSERT INTO `TestTable1` (`Id`, `Name`, `Value`) VALUES (1, 'Just''in', UNHEX('4A75737427696E'));";

            expected += "\r\nINSERT INTO `TestTable1` (`Id`, `Name`, `Value`) VALUES (1, 'Na	e', UNHEX('4E610965'));";

            sql.ShouldBe(expected);
        }
示例#3
0
        public override string Generate(InsertDataExpression expression)
        {
            string errors = ValidateAdditionalFeatureCompatibility(expression.AdditionalFeatures);

            if (!string.IsNullOrEmpty(errors))
            {
                return(errors);
            }

            List <string> columnNames   = new List <string>();
            List <string> columnValues  = new List <string>();
            List <string> insertStrings = new List <string>();

            foreach (InsertionDataDefinition row in expression.Rows)
            {
                columnNames.Clear();
                columnValues.Clear();
                foreach (KeyValuePair <string, object> item in row)
                {
                    columnNames.Add(Quoter.QuoteColumnName(item.Key));
                    columnValues.Add(Quoter.QuoteValue(item.Value));
                }

                string columns = String.Join(", ", columnNames.ToArray());
                string values  = String.Join(", ", columnValues.ToArray());
                insertStrings.Add(String.Format(InsertData, Quoter.QuoteTableName(expression.TableName), columns, values));
            }
            return(String.Join("; ", insertStrings.ToArray()));
        }
示例#4
0
        public override string Generate(InsertDataExpression expression)
        {
            string errors = ValidateAdditionalFeatureCompatibility(expression.AdditionalFeatures);

            if (!string.IsNullOrEmpty(errors))
            {
                return(errors);
            }

            List <string> columnNames   = new List <string>();
            List <string> columnValues  = new List <string>();
            List <string> insertStrings = new List <string>();

            foreach (IDataDefinition row in expression.Rows)
            {
                IEnumerable <IDataValue> columnData = evaluator.Evaluate(row);

                columnNames.Clear();
                columnValues.Clear();

                foreach (IDataValue item in columnData)
                {
                    columnNames.Add(Quoter.QuoteColumnName(item.ColumnName));
                    columnValues.Add(Quoter.QuoteDataValue(item));
                }

                string columns = String.Join(", ", columnNames.ToArray());
                string values  = String.Join(", ", columnValues.ToArray());
                insertStrings.Add(String.Format(InsertData, Quoter.QuoteTableName(expression.TableName), columns, values, CommandDelimiter));
            }
            return(String.Join(MultilineDelimiter, insertStrings.ToArray()));
        }
示例#5
0
        public override void Process(Expressions.RenameTableExpression expression)
        {
            truncator.Truncate(expression);
            FirebirdSchemaProvider schema   = new FirebirdSchemaProvider(this);
            TableDefinition        tableDef = schema.GetTableDefinition(expression.OldName);

            tableDef.Name = expression.NewName;
            CreateTableExpression createNew = new CreateTableExpression()
            {
                TableName  = expression.NewName,
                SchemaName = String.Empty
            };

            //copy column definitions (nb: avoid to copy key names, because in firebird they must be globally unique, so let it rename)
            tableDef.Columns.ToList().ForEach(x => createNew.Columns.Add(new ColumnDefinition()
            {
                Name             = x.Name,
                DefaultValue     = x.DefaultValue,
                IsForeignKey     = x.IsForeignKey,
                IsIdentity       = x.IsIdentity,
                IsIndexed        = x.IsIndexed,
                IsNullable       = x.IsNullable,
                IsPrimaryKey     = x.IsPrimaryKey,
                IsUnique         = x.IsUnique,
                ModificationType = x.ModificationType,
                Precision        = x.Precision,
                Size             = x.Size,
                Type             = x.Type,
                CustomType       = x.CustomType
            }));

            Process(createNew);

            int columnCount = tableDef.Columns.Count;

            string[]             columns = tableDef.Columns.Select(x => x.Name).ToArray();
            InsertDataExpression data    = new InsertDataExpression();

            using (DataSet ds = ReadTableData(String.Empty, expression.OldName))
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    InsertionDataDefinition insert = new InsertionDataDefinition();
                    for (int i = 0; i < columnCount; i++)
                    {
                        insert.Add(new KeyValuePair <string, object>(columns[i], dr.ItemArray[i]));
                    }
                    data.Rows.Add(insert);
                }
            }
            Process(data);

            DeleteTableExpression delTable = new DeleteTableExpression()
            {
                TableName  = expression.OldName,
                SchemaName = String.Empty
            };

            Process(delTable);
        }
        public override string Generate(InsertDataExpression expression)
        {
            string errors = ValidateAdditionalFeatureCompatibility(expression.AdditionalFeatures);

            if (!string.IsNullOrEmpty(errors))
            {
                return(errors);
            }

            var output = new StringBuilder();

            foreach (var pair in GenerateColumnNamesAndValues(expression))
            {
                if (output.Length != 0)
                {
                    AppendSqlStatementEndToken(output);
                }

                output.AppendFormat(
                    InsertData,
                    Quoter.QuoteTableName(expression.TableName, expression.SchemaName),
                    pair.Key,
                    pair.Value);
            }

            return(output.ToString());
        }
        public void CanInsertData()
        {
            var expression = new InsertDataExpression();

            expression.TableName = "TestTable";
            expression.Rows.Add(new InsertionDataDefinition
            {
                new KeyValuePair <string, object>("Id", 1),
                new KeyValuePair <string, object>("Name", "Just'in"),
                new KeyValuePair <string, object>("Website", "codethinked.com")
            });
            expression.Rows.Add(new InsertionDataDefinition
            {
                new KeyValuePair <string, object>("Id", 2),
                new KeyValuePair <string, object>("Name", "Na\\te"),
                new KeyValuePair <string, object>("Website", "kohari.org")
            });

            var sql = generator.Generate(expression);

            var expected = "INSERT INTO \"public\".\"TestTable\" (\"Id\",\"Name\",\"Website\") VALUES (1,'Just''in','codethinked.com');";

            expected += "INSERT INTO \"public\".\"TestTable\" (\"Id\",\"Name\",\"Website\") VALUES (2,'Na\\te','kohari.org');";

            sql.ShouldBe(expected);
        }
示例#8
0
        public void IdentityCanInsert()
        {
            using (var table = new FirebirdTestTable(Processor, null, "bogus int"))
            {
                Processor.Process(new CreateColumnExpression
                {
                    TableName = table.Name,
                    Column    = { Name = "id", IsIdentity = true, Type = DbType.Int64, IsPrimaryKey = true }
                });

                var insert = new InsertDataExpression {
                    TableName = table.Name
                };
                var item = new Model.InsertionDataDefinition();
                item.Add(new System.Collections.Generic.KeyValuePair <string, object>("BOGUS", 0));
                insert.Rows.Add(item);
                Processor.Process(insert);

                using (DataSet ds = Processor.ReadTableData(String.Empty, table.Name))
                {
                    ds.Tables.Count.ShouldBe(1);
                    ds.Tables[0].Rows.Count.ShouldBe(1);
                    ds.Tables[0].Rows[0]["BOGUS"].ShouldBe(0);
                    ds.Tables[0].Rows[0]["id"].ShouldBe(1);
                }
            }
        }
        public void CanInsertData()
        {
            var expression = new InsertDataExpression {
                TableName = "TestTable"
            };

            expression.Rows.Add(new InsertionDataDefinition {
                new KeyValuePair <string, object>("Id", 1),
                new KeyValuePair <string, object>("Name", "Justin"),
                new KeyValuePair <string, object>("Website", "codethinked.com")
            });
            expression.Rows.Add(new InsertionDataDefinition {
                new KeyValuePair <string, object>("Id", 2),
                new KeyValuePair <string, object>("Name", "Nate"),
                new KeyValuePair <string, object>("Website", "kohari.org")
            });

            ApplyDefaultConventions(expression);

            var sql = generator.Generate(expression);

            var expected = "INSERT INTO [TestTable] (Id,Name,Website) VALUES (1,'Justin','codethinked.com');";

            expected += "INSERT INTO [TestTable] (Id,Name,Website) VALUES (2,'Nate','kohari.org');";

            sql.ShouldBe(expected);
        }
示例#10
0
        public override string Generate(InsertDataExpression expression)
        {
            if (compatabilityMode == CompatabilityMode.STRICT)
            {
                List <string> unsupportedFeatures = expression.AdditionalFeatures.Keys.Where(x => !IsAdditionalFeatureSupported(x)).ToList();

                if (unsupportedFeatures.Any())
                {
                    string errorMessage =
                        string.Format("The following database specific additional features are not supported in strict mode [{0}]",
                                      expression.AdditionalFeatures.Keys.Aggregate((x, y) => x + ", " + y));
                    return(compatabilityMode.HandleCompatabilty(errorMessage));
                }
            }

            List <string> columnNames   = new List <string>();
            List <string> columnValues  = new List <string>();
            List <string> insertStrings = new List <string>();

            foreach (InsertionDataDefinition row in expression.Rows)
            {
                columnNames.Clear();
                columnValues.Clear();
                foreach (KeyValuePair <string, object> item in row)
                {
                    columnNames.Add(Quoter.QuoteColumnName(item.Key));
                    columnValues.Add(Quoter.QuoteValue(item.Value));
                }

                string columns = String.Join(", ", columnNames.ToArray());
                string values  = String.Join(", ", columnValues.ToArray());
                insertStrings.Add(String.Format(InsertData, Quoter.QuoteTableName(expression.TableName), columns, values));
            }
            return(String.Join("; ", insertStrings.ToArray()));
        }
示例#11
0
 protected static bool IsUsingIdentityInsert(InsertDataExpression expression)
 {
     if (expression.AdditionalFeatures.ContainsKey(SqlServerExtensions.IdentityInsert))
     {
         return((bool)expression.AdditionalFeatures[SqlServerExtensions.IdentityInsert]);
     }
     return(false);
 }
示例#12
0
        public void UpdateVersionInfo(long version)
        {
            var dataExpression = new InsertDataExpression();

            dataExpression.Rows.Add(CreateVersionInfoInsertionData(version));
            dataExpression.TableName  = VersionTableMetaData.TableName;
            dataExpression.SchemaName = VersionTableMetaData.SchemaName;
            dataExpression.ExecuteWith(Processor);
        }
        public IInsertDataOrInSchemaSyntax IntoTable(string tableName)
        {
            var expression = new InsertDataExpression {
                TableName = tableName
            };

            _context.Expressions.Add(expression);
            return(new InsertDataExpressionBuilder(expression));
        }
示例#14
0
        /// <inheritdoc />
        public IInsertIntoBuilder IntoTable(string tableName)
        {
            var expression = new InsertDataExpression(_context)
            {
                TableName = tableName
            };

            return(new InsertIntoBuilder(expression));
        }
        public void CanAddCaseSensitiveColumnNames()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);
             builder.WithCaseSensitiveColumnNames();

             expression.CaseSensitiveColumnNames.ShouldBeTrue();
        }
        public void SqlServerIdentityInsertCalledTwiceAddsCorrectAdditionalFeature()
        {
            var expression = new InsertDataExpression();
            var builder = new InsertDataExpressionBuilder(expression);
            builder.WithIdentityInsert().WithIdentityInsert();

            expression.AdditionalFeatures.ShouldContain(
                new System.Collections.Generic.KeyValuePair<string, object>(SqlServerExtensions.IdentityInsert, true));
        }
示例#17
0
        protected virtual string GetOverridingIdentityValuesString(InsertDataExpression expression)
        {
            if (!expression.AdditionalFeatures.ContainsKey(PostgresExtensions.OverridingIdentityValues))
            {
                return(string.Empty);
            }

            throw new NotSupportedException("The current version doesn't support OVERRIDING {SYSTEM|USER} VALUE. Please use Postgres 10+.");
        }
示例#18
0
        public static InsertDataExpression GetInsertGUIDExpression()
        {
            var expression = new InsertDataExpression {
                TableName = TestTableName1
            };

            expression.Rows.Add(new ExplicitDataDefinition(new DataValue("guid", TestGuid)));

            return(expression);
        }
        public void SqlServerIdentityInsertCalledTwiceAddsCorrectAdditionalFeature()
        {
            var expression = new InsertDataExpression();
            var builder    = new InsertDataExpressionBuilder(expression);

            builder.WithIdentityInsert().WithIdentityInsert();

            expression.AdditionalFeatures.ShouldContain(
                new KeyValuePair <string, object>(SqlServerExtensions.IdentityInsert, true));
        }
示例#20
0
        public IInsertDataSyntax IntoTable(string tableName)
        {
            var expression = new InsertDataExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax)
            {
                TableName = tableName
            };

            _context.Expressions.Add(expression);
            return(new InsertDataBuilder(expression));
        }
        public void RowsGetSetWhenRowIsCalled()
        {
            var expression = new InsertDataExpression();

            var builder = new InsertDataExpressionBuilder(expression);
            builder
                .Row(new { Data1 = "Row1Data1", Data2 = "Row1Data2" })
                .Row(new { Data1 = "Row2Data1", Data2 = "Row2Data2" });

            expression.Rows.Count.ShouldBe(2);
        }
        public void CanAddDataTableAndRowsInsertedSeperately()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);
             builder
            .DataTable("data.xml");

             expression.DataTableFile.ShouldBe("data.xml");
             expression.InsertRowsSeparately.ShouldBeTrue();
        }
示例#23
0
 public override string Generate(InsertDataExpression expression)
 {
     if (IsUsingIdentityInsert(expression))
     {
         return(string.Format("{0}; {1}; {2}",
                              string.Format(IdentityInsert, Quoter.QuoteTableName(expression.TableName), "ON"),
                              base.Generate(expression),
                              string.Format(IdentityInsert, Quoter.QuoteTableName(expression.TableName), "OFF")));
     }
     return(base.Generate(expression));
 }
示例#24
0
        public void RowsGetSetWhenRowIsCalled()
        {
            var expression = new InsertDataExpression();

            var builder = new InsertDataExpressionBuilder(expression);

            builder
            .Row(new { Data1 = "Row1Data1", Data2 = "Row1Data2" })
            .Row(new { Data1 = "Row2Data1", Data2 = "Row2Data2" });

            expression.Rows.Count.ShouldBe(2);
        }
        public void PostgresOverridingUserValueCalledTwiceAddsCorrectAdditionalFeature()
        {
            var expression = new InsertDataExpression();
            var builder    = new InsertDataExpressionBuilder(expression);

            builder.WithOverridingUserValue().WithOverridingUserValue();

            expression.AdditionalFeatures.ShouldContain(
                new KeyValuePair <string, object>(
                    PostgresExtensions.OverridingIdentityValues,
                    PostgresOverridingIdentityValuesType.User));
        }
        public static InsertDataExpression GetInsertEnumExpression()
        {
            var expression = new InsertDataExpression {
                TableName = TestTableName1
            };

            expression.Rows.Add(new InsertionDataDefinition {
                new KeyValuePair <string, object>("enum", Foo.Boo)
            });

            return(expression);
        }
示例#27
0
        public static InsertDataExpression GetInsertGUIDExpression(Guid guid)
        {
            var expression = new InsertDataExpression {
                TableName = TestTableName1
            };

            expression.Rows.Add(new InsertionDataDefinition {
                new KeyValuePair <string, object>("guid", guid)
            });

            return(expression);
        }
示例#28
0
        public override string Generate(InsertDataExpression expression)
        {
            string errors = ValidateAdditionalFeatureCompatibility(expression.AdditionalFeatures);

            if (!string.IsNullOrEmpty(errors))
            {
                return(errors);
            }

            var insertStrings = GenerateColumnNamesAndValues(expression).Select(x => String.Format(InsertData, Quoter.QuoteTableName(expression.TableName), x.Key, x.Value));

            return(String.Join("; ", insertStrings.ToArray()));
        }
        public void CanAddMultipleReplacementValues()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);
             builder
            .WithReplacementValue(string.Empty, " ")
            .WithReplacementValue(string.Empty, "Foo");

             expression.ReplacementValues.Count.ShouldBe(1);
             expression.ReplacementValues.ContainsKey(string.Empty).ShouldBeTrue();
             expression.ReplacementValues[string.Empty].ShouldBe("Foo");
        }
示例#30
0
        /// <inheritdoc />
        protected override string GetOverridingIdentityValuesString(InsertDataExpression expression)
        {
            if (!expression.AdditionalFeatures.ContainsKey(PostgresExtensions.OverridingIdentityValues))
            {
                return(string.Empty);
            }

            var overridingIdentityValues =
                expression.GetAdditionalFeature <PostgresOverridingIdentityValuesType>(
                    PostgresExtensions.OverridingIdentityValues);

            return(string.Format(" OVERRIDING {0} VALUE",
                                 overridingIdentityValues == PostgresOverridingIdentityValuesType.User ? "USER" : "SYSTEM"));
        }
示例#31
0
        public void NonUnicodeQuotesCorrectly()
        {
            var expression = new InsertDataExpression {
                TableName = "TestTable"
            };

            expression.Rows.Add(new InsertionDataDefinition
            {
                new KeyValuePair <string, object>("NonUnicodeStringValue", new NonUnicodeString("NonUnicodeString")),
            });

            var result = Generator.Generate(expression);

            result.ShouldBe("INSERT INTO [dbo].[TestTable] ([NonUnicodeStringValue]) VALUES ('NonUnicodeString')");
        }
示例#32
0
        public void CanInsertGuidData()
        {
            var gid        = Guid.NewGuid();
            var expression = new InsertDataExpression {
                TableName = "TestTable"
            };

            expression.Rows.Add(new ExplicitDataDefinition(new DataValue("guid", gid)));

            var sql = generator.Generate(expression);

            var expected = String.Format("INSERT INTO \"TestTable\" (\"guid\") VALUES ('{0}')", gid);

            sql.ShouldBe(expected);
        }
示例#33
0
        public override string Generate(InsertDataExpression expression)
        {
            var insertStrings = new List <string>();

            foreach (IDataDefinition row in expression.Rows)
            {
                IEnumerable <IDataValue> dataValues = evaluator.Evaluate(row).ToArray();

                string columns = String.Join(", ", dataValues.Select(dataValue => Quoter.QuoteColumnName(dataValue.ColumnName)).ToArray());
                string values  = String.Join(", ", dataValues.Select(dataValue => Quoter.QuoteDataValue(dataValue)).ToArray());

                insertStrings.Add(String.Format(InsertData, Quoter.QuoteTableName(expression.TableName), columns, values, CommandDelimiter));
            }

            return("INSERT ALL " + String.Join(" ", insertStrings.ToArray()) + " SELECT 1 FROM DUAL");
        }
        public void NonUnicodeQuotesCorrectly()
        {
            var expression = new InsertDataExpression {
                TableName = "TestTable"
            };

            expression.Rows.Add(new InsertionDataDefinition
            {
                new KeyValuePair <string, object>("NormalString", "Just'in"),
                new KeyValuePair <string, object>("UnicodeString", new NonUnicodeString("codethinked'.com"))
            });

            var result = Generator.Generate(expression);

            result.ShouldBe("INSERT INTO TestTable (NormalString, UnicodeString) VALUES ('Just''in', 'codethinked''.com')");
        }
示例#35
0
        public void ExplicitUnicodeStringIgnoredForNonSqlServer()
        {
            var expression = new InsertDataExpression {
                TableName = "TestTable"
            };

            expression.Rows.Add(new InsertionDataDefinition
            {
                new KeyValuePair <string, object>("NormalString", "Just'in"),
                new KeyValuePair <string, object>("UnicodeString", new ExplicitUnicodeString("codethinked'.com"))
            });

            var result = Generator.Generate(expression);

            result.ShouldBe("INSERT INTO \"public\".\"TestTable\" (\"NormalString\",\"UnicodeString\") VALUES ('Just''in','codethinked''.com');");
        }
        public void RowsGetPopulatedWhenRowWithDictionaryIsCalled()
        {
            var values = new Dictionary<string, object>();
            values["Data1"] = "Row1Data1";
            values["Data2"] = "Row1Data2";

            var expression = new InsertDataExpression();

            new InsertDataExpressionBuilder(expression).Row(values);

            expression.Rows.Count.ShouldBe(1);

            expression.Rows[0][0].Key.ShouldBe("Data1");
            expression.Rows[0][0].Value.ShouldBe("Row1Data1");
            expression.Rows[0][1].Key.ShouldBe("Data2");
            expression.Rows[0][1].Value.ShouldBe("Row1Data2");
        }
        public override string Generate(InsertDataExpression expression)
        {
            var result = new StringBuilder();
            foreach (InsertionData row in expression.Rows)
            {
                List<string> columnNames = new List<string>();
                List<object> columnData = new List<object>();
                foreach (KeyValuePair<string, object> item in row)
                {
                    columnNames.Add(item.Key);
                    columnData.Add(item.Value);
                }

                string columns = GetColumnList(columnNames);
                string data = GetDataList(columnData);
                result.Append(FormatExpression("INSERT INTO [{0}] ({1}) VALUES ({2});", expression.TableName, columns, data));
            }
            return result.ToString();
        }
        public void CanWithIdentityFalseByDefault()
        {
            var expression = new InsertDataExpression();

             expression.WithIdentity.ShouldBeFalse();
        }
 public InsertDataExpressionBuilder(InsertDataExpression expression)
 {
     _expression = expression;
 }
 public IInsertDataOrInSchemaSyntax IntoTable(string tableName)
 {
     var expression = new InsertDataExpression { TableName = tableName };
     _context.Expressions.Add(expression);
     return new InsertDataExpressionBuilder(expression);
 }
示例#41
0
 public void Process(InsertDataExpression expression)
 {
     Process(Generator.Generate(expression));
 }
        public void CanAddWithIdentity()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);
             builder
            .WithIdentity();

             expression.WithIdentity.ShouldBeTrue();
        }
        public void CanInsertData()
        {
            var expression = new InsertDataExpression();
            expression.TableName = "TestTable";
            expression.Rows.Add(new InsertionDataDefinition { new KeyValuePair<string, object>("Id", 1),
                                                    new KeyValuePair<string, object>("Name", "Justin"),
                                                    new KeyValuePair<string, object>("Website", "codethinked.com") });
            expression.Rows.Add(new InsertionDataDefinition { new KeyValuePair<string, object>("Id", 2),
                                                    new KeyValuePair<string, object>("Name", "Nate"),
                                                    new KeyValuePair<string, object>("Website", "kohari.org") });

            string sql = generator.Generate(expression);

            string expected = "INSERT INTO [TestTable] (Id,Name,Website) VALUES (1,'Justin','codethinked.com');";
            expected += "INSERT INTO [TestTable] (Id,Name,Website) VALUES (2,'Nate','kohari.org');";

            sql.ShouldBe(expected);
        }
        public void CanAddWithIdentityOnColumn()
        {
            var expression = new InsertDataExpression();

              var builder = new InsertDataExpressionBuilder(expression);
              builder
             .WithIdentity().OnColumn("Test");

              expression.WithIdentity.ShouldBeTrue();
              expression.IdentityColumn.ShouldBe("Test");
        }
示例#45
0
        public override string Generate(InsertDataExpression expression)
        {
            var result = new StringBuilder();
            foreach (InsertionDataDefinition row in expression.Rows)
            {
                List<string> columnNames = new List<string>();
                List<object> columnData = new List<object>();
                foreach (KeyValuePair<string, object> item in row)
                {
                    columnNames.Add(item.Key);
                    columnData.Add(item.Value);
                }

                string columns = GetColumnList(columnNames);
                string data = GetDataList(columnData);
                result.Append(String.Format(" INTO {0} ({1}) VALUES ({2})", expression.TableName, columns, data));
            }
            return "INSERT ALL" + result.ToString() + " SELECT 1 FROM DUAL";
        }
示例#46
0
        public void CanInsertGuidData()
        {
            var gid = Guid.NewGuid();
            var expression = new InsertDataExpression() { TableName = "TestTable" };
            expression.Rows.Add(new InsertionDataDefinition { new KeyValuePair<string, object>("guid", gid) });

            string sql = generator.Generate(expression);

            string expected = String.Format("INSERT ALL INTO TestTable (guid) VALUES ('{0}') SELECT 1 FROM DUAL", gid.ToString());

            sql.ShouldBe(expected);
        }
        public void InsertRowsSeparatelyFalseByDefault()
        {
            var expression = new InsertDataExpression();

             expression.InsertRowsSeparately.ShouldBeFalse();
        }
        public void NoCaseSensitiveByDefault()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);

             expression.CaseSensitiveColumnNames.ShouldBeFalse();
        }
示例#49
0
        public virtual void Process(InsertDataExpression expression)
        {
            if (expression.Rows != null && expression.Rows.Count == 0)
             {
            Announcer.Say("No data for " + expression.TableName);
            return;
             }

             // Check if require rows to be inserted separately
             // This may be required as this is a large dataset or the processor doe snot support inserting multiple
             if (expression.InsertRowsSeparately && expression.Rows != null && expression.Rows.Count > 1)
             {

            foreach (var row in expression.Rows)
            {
               var insert = new InsertDataExpression()
                               {
                                  CaseSensitiveColumnNames = expression.CaseSensitiveColumnNames
                                  , CaseSensitiveColumns = expression.CaseSensitiveColumns
                                  , DataTableFile = expression.DataTableFile
                                  , SchemaName = expression.SchemaName
                                  , TableName = expression.TableName
                                  , WithIdentity = expression.WithIdentity
                };
               // Copy the replacement to the new item
               foreach (var replacement in expression.ReplacementValues)
               {
                  insert.ReplacementValues.Add(replacement.Key, replacement.Value);
               }

                insert.Rows.Add(row);
                Process(Generator.Generate(insert));
            }
             }
             else
               			Process(Generator.Generate(expression));
        }
示例#50
0
 public abstract string Generate(InsertDataExpression expression);
 private void updateVersionInfoWithAppliedMigration(long version)
 {
     var dataExpression = new InsertDataExpression();
     dataExpression.Rows.Add(createVersionInfoInsertionData(version));
     dataExpression.TableName = _versionTableMetaData.TableName;
     dataExpression.ExecuteWith(_migrationProcessor);
 }
        public void CanInsertGuidData()
        {
            var gid = Guid.NewGuid();
            var expression = new InsertDataExpression { TableName = "TestTable" };
            expression.Rows.Add(new InsertionDataDefinition { new KeyValuePair<string, object>("guid", gid) });

            var sql = generator.Generate(expression);

            var expected = String.Format("INSERT INTO \"public\".\"TestTable\" (\"guid\") VALUES ('{0}');", gid);

            sql.ShouldBe(expected);
        }
        public void CanSetInsertRowsSeparately()
        {
            var expression = new InsertDataExpression();

             var builder = new InsertDataExpressionBuilder(expression);
             builder
            .InsertRowsSeparately();

             expression.InsertRowsSeparately.ShouldBeTrue();
        }