protected virtual MigrationStatement Generate(CreateProcedureOperation op) { MigrationStatement stmt = new MigrationStatement(); stmt.Sql = GenerateProcedureCmd(op); return(stmt); }
protected internal void CreateProcedure <TParameters>(string name, string bodySql, Func <ParameterBuilder, TParameters> parametersAction, string schema = "dbo", object anonymousArguments = null) { RuntimeFailureMethods.Requires(!string.IsNullOrWhiteSpace(name), null, "!string.IsNullOrWhiteSpace(name)"); RuntimeFailureMethods.Requires(parametersAction != null, null, "parametersAction != null"); name = string.Format("{0}.{1}", schema, name); var createOperation = new CreateProcedureOperation(name, bodySql, anonymousArguments); AddOperation(createOperation); var parameters = parametersAction(new ParameterBuilder()); parameters.GetType().GetProperties().Each(delegate(PropertyInfo p, int i) { var parameterModel = p.GetValue(parameters, null) as ParameterModel; if (parameterModel != null) { if (string.IsNullOrWhiteSpace(parameterModel.Name)) { parameterModel.Name = p.Name; } createOperation.Parameters.Add(parameterModel); } } ); }
public void CreateStoredProcedure <TParameters>( string name, Func <ParameterBuilder, TParameters> parametersAction, string body, object anonymousArguments = null) { Check.NotEmpty(name, "name"); Check.NotNull(parametersAction, "parametersAction"); Check.NotEmpty(body, "body"); var createProcedureOperation = new CreateProcedureOperation(name, body, anonymousArguments); AddOperation(createProcedureOperation); var parameters = parametersAction(new ParameterBuilder()); parameters.GetType().GetProperties() .Each( (p, i) => { var parameterModel = p.GetValue(parameters, null) as ParameterModel; if (parameterModel != null) { if (string.IsNullOrWhiteSpace(parameterModel.Name)) { parameterModel.Name = p.Name; } createProcedureOperation.Parameters.Add(parameterModel); } }); }
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); }
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 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"); } }
protected virtual IEnumerable <MigrationStatement> Generate(CreateProcedureOperation operation) { return(Generate(operation, "CREATE")); }
private string GenerateSqlStatementConcrete(CreateProcedureOperation migrationOperation) { throw new NotSupportedException("Procedures are not supported by SQLite"); }
/// <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 void Generate(CreateProcedureOperation createProcedureOperation) { ArgumentUtility.CheckNotNull("createProcedureOperation", createProcedureOperation); throw new NotImplementedException("CreateProcedureOperation"); }
protected override void Generate(CreateProcedureOperation createProcedureOperation, IndentedTextWriter writer) { base.Generate(createProcedureOperation, writer); }
public ProcedureBuilder(CreateProcedureOperation createProcedureOperation, DbMigration migration) { RuntimeFailureMethods.Requires(createProcedureOperation != null, null, "createProcedureOperation != null"); this._createProcedureOperation = createProcedureOperation; this._migration = migration; }
protected override void Generate(CreateProcedureOperation createProcedureOperation) { Statement("GO"); base.Generate(createProcedureOperation); }