Пример #1
0
        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);
                }
            });
        }
Пример #2
0
        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"));
 }
Пример #5
0
 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);
 }
Пример #8
0
 protected override void Generate(AlterProcedureOperation alterProcedureOperation)
 {
     Statement("GO");
     base.Generate(alterProcedureOperation);
 }