public void AlterStoredProcedure <TParameters>( string name, Func <ParameterBuilder, TParameters> parametersAction, string body, object anonymousArguments = null) { Check.NotEmpty(name, "name"); Check.NotNull(parametersAction, "parametersAction"); var alterProcedureOperation = new AlterProcedureOperation(name, body, anonymousArguments); AddOperation(alterProcedureOperation); var parameters = parametersAction(new ParameterBuilder()); parameters.GetType().GetNonIndexerProperties() .Each( (p, i) => { var parameterModel = p.GetValue(parameters, null) as ParameterModel; if (parameterModel != null) { if (string.IsNullOrWhiteSpace(parameterModel.Name)) { parameterModel.Name = p.Name; } alterProcedureOperation.Parameters.Add(parameterModel); } }); }
public void Generate_can_output_alter_procedure_operations() { var alterProcedureOperation = new AlterProcedureOperation("Foo", "SELECT ShinyHead\r\nFROM Pilkingtons"); alterProcedureOperation.Parameters.Add( new ParameterModel(PrimitiveTypeKind.String) { Name = "P'", DefaultValue = "Bar", IsOutParameter = true }); var codeGenerator = new CSharpMigrationCodeGenerator(); var generatedMigration = codeGenerator.Generate( "Migration", new MigrationOperation[] { alterProcedureOperation }, "Source", "Target", "Foo", "Bar"); Assert.Equal( @"namespace Foo { using System; using System.Data.Entity.Migrations; public partial class Bar : DbMigration { public override void Up() { AlterStoredProcedure( ""Foo"", p => new { P = p.String(name: ""P'"", defaultValue: ""Bar"", outParameter: true), }, body: @""SELECT ShinyHead FROM Pilkingtons"" ); } public override void Down() { throw new NotSupportedException(""" + Strings.ScaffoldSprocInDownNotSupported + @"""); } } } ", generatedMigration.UserCode); }
public void Generate_can_output_alter_procedure_operations() { var alterProcedureOperation = new AlterProcedureOperation("Foo", "SELECT ShinyHead\r\nFROM Pilkingtons"); alterProcedureOperation.Parameters.Add( new ParameterModel(PrimitiveTypeKind.String) { Name = "P'", DefaultValue = "Bar", IsOutParameter = true }); var codeGenerator = new VisualBasicMigrationCodeGenerator(); var generatedMigration = codeGenerator.Generate( "Migration", new MigrationOperation[] { alterProcedureOperation }, "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() AlterStoredProcedure( ""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() Throw New NotSupportedException(""" + Strings.ScaffoldSprocInDownNotSupported + @""") End Sub End Class End Namespace ", generatedMigration.UserCode); }
protected virtual IEnumerable <MigrationStatement> Generate(AlterProcedureOperation operation) { return(Generate(operation, "ALTER")); }
private string GenerateSqlStatementConcrete(AlterProcedureOperation migrationOperation) { throw new NotSupportedException("Procedures are not supported by SQLite"); }
/// <summary> /// Generates the specified alter procedure operation. /// </summary> /// <param name="alterProcedureOperation">The alter procedure operation.</param> protected virtual void Generate(AlterProcedureOperation alterProcedureOperation) { }
protected override void Generate(AlterProcedureOperation alterProcedureOperation, IndentedTextWriter writer) { base.Generate(alterProcedureOperation, writer); }
protected override void Generate(AlterProcedureOperation alterProcedureOperation) { Statement("GO"); base.Generate(alterProcedureOperation); }