public void Generate_can_output_create_procedure_operations() { var createProcedureOperation = new CreateProcedureOperation("Foo", "SELECT ShinyHead\r\nFROM Pilkingtons"); createProcedureOperation.Parameters.Add( new ParameterModel(PrimitiveTypeKind.String) { Name = "P'", DefaultValue = "Bar", IsOutParameter = true }); var codeGenerator = new CSharpMigrationCodeGenerator(); var generatedMigration = codeGenerator.Generate( "Migration", new MigrationOperation[] { createProcedureOperation }, "Source", "Target", "Foo", "Bar"); Assert.Equal( @"namespace Foo { using System; using System.Data.Entity.Migrations; public partial class Bar : DbMigration { public override void Up() { CreateStoredProcedure( ""Foo"", p => new { P = p.String(name: ""P'"", defaultValue: ""Bar"", outParameter: true), }, body: @""SELECT ShinyHead FROM Pilkingtons"" ); } public override void Down() { DropStoredProcedure(""Foo""); } } } ", generatedMigration.UserCode); }
public void Generate_can_output_create_procedure_operations() { var createProcedureOperation = new CreateProcedureOperation("Foo", "SELECT ShinyHead\r\nFROM Pilkingtons"); createProcedureOperation.Parameters.Add( new ParameterModel(PrimitiveTypeKind.String) { Name = "P'", DefaultValue = "Bar", IsOutParameter = true }); var codeGenerator = new VisualBasicMigrationCodeGenerator(); var generatedMigration = codeGenerator.Generate( "Migration", new MigrationOperation[] { createProcedureOperation }, "Source", "Target", "Foo", "Bar"); Assert.Equal( @"Imports System Imports System.Data.Entity.Migrations Imports Microsoft.VisualBasic Namespace Foo Public Partial Class Bar Inherits DbMigration Public Overrides Sub Up() CreateStoredProcedure( ""Foo"", Function(p) New With { .P = p.String(name := ""P'"", defaultValue := ""Bar"", outParameter := True) }, body := ""SELECT ShinyHead"" & vbCrLf & _ ""FROM Pilkingtons"" ) End Sub Public Overrides Sub Down() DropStoredProcedure(""Foo"") End Sub End Class End Namespace ", generatedMigration.UserCode); }
public void Inverse_should_produce_drop_table_operation() { var createProcedureOperation = new CreateProcedureOperation("Foo", "Bar"); var dropProcedureOperation = (DropProcedureOperation)createProcedureOperation.Inverse; Assert.Equal("Foo", dropProcedureOperation.Name); }
public void Can_add_and_enumerate_parameters() { var createProcedureOperation = new CreateProcedureOperation("Foo", "Bar"); createProcedureOperation.Parameters.Add( new ParameterModel(PrimitiveTypeKind.Int64) { Name = "Bar" }); Assert.NotNull(createProcedureOperation.Parameters.Single()); }
protected virtual IEnumerable<MigrationStatement> Generate(CreateProcedureOperation operation) { return Generate(operation, "CREATE"); }
/// <summary>Generates code to perform a <see cref="T:System.Data.Entity.Migrations.Model.CreateProcedureOperation" />.</summary> /// <param name="createProcedureOperation">The operation to generate code for.</param> /// <param name="writer">Text writer to add the generated code to.</param> protected virtual void Generate(CreateProcedureOperation createProcedureOperation, IndentedTextWriter writer) { Check.NotNull(createProcedureOperation, "createProcedureOperation"); Check.NotNull(writer, "writer"); Generate(createProcedureOperation, "CreateStoredProcedure", writer); }
/// <summary> /// Generates the specified create procedure operation. /// </summary> /// <param name="createProcedureOperation">The create procedure operation.</param> protected virtual void Generate(CreateProcedureOperation createProcedureOperation) { Check.NotNull(createProcedureOperation, "createProcedureOperation"); Generate(createProcedureOperation, "CREATE"); }
private string GenerateProcedureCmd(CreateProcedureOperation po) { StringBuilder sql = new StringBuilder(); sql.AppendLine(string.Format("CREATE PROCEDURE `{0}`({1})", po.Name.Replace("dbo.", ""), GenerateParamSentence(po.Parameters))); sql.AppendLine("BEGIN "); sql.AppendLine(po.BodySql); sql.AppendLine(" END"); return sql.ToString().Replace("@", ""); }
protected virtual MigrationStatement Generate(CreateProcedureOperation op) { MigrationStatement stmt = new MigrationStatement(); stmt.Sql = GenerateProcedureCmd(op); return stmt; }
/// <summary> /// Generates the specified create procedure operation. /// </summary> /// <param name="createProcedureOperation">The create procedure operation.</param> protected virtual void Generate(CreateProcedureOperation createProcedureOperation) { }
protected virtual void Generate(CreateProcedureOperation createProcedureOperation, IndentedTextWriter writer) { Check.NotNull(createProcedureOperation, "createProcedureOperation"); Check.NotNull(writer, "writer"); writer.WriteLine("CreateStoredProcedure("); writer.Indent++; writer.Write(Quote(createProcedureOperation.Name)); writer.WriteLine(","); if (createProcedureOperation.Parameters.Any()) { writer.WriteLine("p => new"); writer.Indent++; writer.WriteLine("{"); writer.Indent++; createProcedureOperation.Parameters.Each( p => { var scrubbedName = ScrubName(p.Name); writer.Write(scrubbedName); writer.Write(" ="); Generate(p, writer, !string.Equals(p.Name, scrubbedName, StringComparison.Ordinal)); writer.WriteLine(","); }); writer.Indent--; writer.WriteLine("},"); writer.Indent--; } writer.Write("body:"); if (!string.IsNullOrWhiteSpace(createProcedureOperation.BodySql)) { writer.WriteLine(); writer.Indent++; var indentString = writer.NewLine + new string(' ', (writer.Indent * 4) + 2); writer.Write("@"); writer.WriteLine( Generate( createProcedureOperation .BodySql .Replace(Environment.NewLine, indentString))); writer.Indent--; } else { writer.WriteLine(" \"\""); } writer.Indent--; writer.WriteLine(");"); writer.WriteLine(); }
private CreateProcedureOperation BuildCreateProcedureOperation(EdmFunction function, string bodySql) { DebugCheck.NotNull(function); var createProcedureOpeation = new CreateProcedureOperation(function.Name, bodySql); function.Parameters .Each(p => createProcedureOpeation.Parameters.Add(BuildParameterModel(p, _target))); return createProcedureOpeation; }
protected virtual void Generate(CreateProcedureOperation createProcedureOperation) { Check.NotNull(createProcedureOperation, "createProcedureOperation"); using (var writer = Writer()) { writer.WriteLine("CREATE PROCEDURE " + Name(createProcedureOperation.Name)); writer.Indent++; createProcedureOperation.Parameters.Each( (p, i) => { Generate(p, writer); if (i < createProcedureOperation.Parameters.Count - 1) { writer.WriteLine(","); } }); writer.WriteLine(); writer.Indent--; writer.WriteLine("AS"); writer.WriteLine("BEGIN"); writer.Indent++; if (!string.IsNullOrWhiteSpace(createProcedureOperation.BodySql)) { var indentString = writer.NewLine + new string(' ', (writer.Indent * 4)); var indentReplacer = new Regex(@"\r?\n *"); writer.WriteLine(indentReplacer.Replace(createProcedureOperation.BodySql, indentString)); } else { writer.WriteLine("RETURN"); } writer.Indent--; writer.Write("END"); Statement(writer, batchTerminator: "GO"); } }