/// <summary> /// Must implement this method /// </summary> /// <param name="insertHistoryOperation"></param> protected override void Generate(InsertHistoryOperation insertHistoryOperation) { Contract.Requires(insertHistoryOperation != null); using (var writer = Writer()) { writer.Write("INSERT INTO \"dbo\"."); writer.Write(Name(insertHistoryOperation.Table)); writer.Write(" ({0}, {1}, {2})", Quote("MigrationId"), Quote("Model"), Quote("ProductVersion")); writer.Write(" VALUES ("); writer.Write(Generate(insertHistoryOperation.MigrationId)); writer.Write(", "); writer.Write(Generate(insertHistoryOperation.Model)); writer.Write(", "); writer.Write(Generate(insertHistoryOperation.ProductVersion)); writer.Write(")"); Statement(writer); } }
public void Can_get_and_set_properties() { var model = new byte[] { 0xDA }; var insertHistoryOperation = new InsertHistoryOperation("Foo", "Migration1", model); Assert.Equal("Foo", insertHistoryOperation.Table); Assert.Equal("Migration1", insertHistoryOperation.MigrationId); Assert.Same(model, insertHistoryOperation.Model); }
protected virtual MigrationStatement Generate(InsertHistoryOperation op) { if (op == null) return null; StringBuilder sb = new StringBuilder(); StringBuilder model = new StringBuilder(); foreach (byte item in op.Model) model.Append(item.ToString("X2")); #if NET_45_OR_GREATER sb.Append("insert into `" + op.Table + "` (`migrationId`, `model`, `productVersion`) "); sb.AppendFormat(" values ( '{0}', '{1}', '{2}') ", op.MigrationId, "0x" + model.ToString(), op.ProductVersion); #else sb.Append("insert into `" + op.Table + "` (`migrationId`, `createdOn`, `model`, `productVersion`) "); sb.AppendFormat(" values ( '{0}', '{1}', {2}, '{3}' ) ", op.MigrationId, op.CreatedOn.ToString("yyyy-MM-dd hh:mm:ss"), "0x" + model.ToString(), op.ProductVersion); #endif return new MigrationStatement { Sql = sb.ToString() }; }
public void Generate_can_output_insert_history_statement() { var migrationProvider = new SqlServerMigrationSqlGenerator(); var insertHistoryOperation = new InsertHistoryOperation( "Foo", "Migration1", new byte[] { 0xBE, 0xEF } ); var sql = migrationProvider.Generate( new[] { insertHistoryOperation }, "2008").Join(s => s.Sql, Environment.NewLine); var expectedVersion = FileVersionInfo.GetVersionInfo(typeof(DbMigrator).Assembly.Location).ProductVersion; Assert.True( sql.Contains( "INSERT INTO [Foo] ([MigrationId], [Model], [ProductVersion]) VALUES ('Migration1', 0xBEEF, '" + expectedVersion + "')")); }
protected virtual MigrationStatement Generate(InsertHistoryOperation op) { if (op == null) return null; StringBuilder sb = new StringBuilder(); StringBuilder model = new StringBuilder(); model.Append(BitConverter.ToString(op.Model).Replace("-", "")); sb.Append("insert into `" + TrimSchemaPrefix(op.Table) + "` (`migrationId`, `model`, `productVersion`) "); sb.AppendFormat(" values ( '{0}', {1}, '{2}') ", op.MigrationId, "0x" + model.ToString(), op.ProductVersion); return new MigrationStatement { Sql = sb.ToString() }; }
/// <summary> /// Generates SQL for a <see cref = "InsertHistoryOperation" />. /// Generated SQL should be added using the Statement method. /// </summary> /// <param name = "insertHistoryOperation">The operation to produce SQL for.</param> protected virtual void Generate(InsertHistoryOperation insertHistoryOperation) { Contract.Requires(insertHistoryOperation != null); using (var writer = Writer()) { writer.Write("INSERT INTO "); writer.Write(Name(insertHistoryOperation.Table)); writer.Write(" ([MigrationId], [Model], [ProductVersion])"); writer.Write(" VALUES ("); writer.Write(Generate(insertHistoryOperation.MigrationId)); writer.Write(", "); writer.Write(Generate(insertHistoryOperation.Model)); writer.Write(", "); writer.Write(Generate(insertHistoryOperation.ProductVersion)); writer.Write(")"); Statement(writer); } }