Code First Migrations and Stored Procedures

前端 未结 4 879
青春惊慌失措
青春惊慌失措 2020-12-05 10:19

I have just created a database and done my first migration (just a simple table add). Now I want to add some stored procedures which I have just added by writing the sql an

4条回答
  •  半阙折子戏
    2020-12-05 10:52

    I am using EF6 and the DbMigration class provides methods to Create/Alter/Delete stored procedures

    • Create a new stored procedure

      public partial class MyFirstMigration : DbMigration
      {
          public override void Up()
          {
              // Create a new store procedure
              CreateStoredProcedure("dbo.DequeueMessages"
              // These are stored procedure parameters
              , c => new{                
                  MessageCount = c.Int()
              },
              // Here is the stored procedure body
              @"
              SET NOCOUNT ON;
              SELECT TOP (@MessageCount)
                  *
              FROM
                  dbo.MyTable;
              ");
          }
      
          public override void Down()
          {
              // Delete the stored procedure
              DropStoredProcedure("dbo.DequeueMessages");                
          }
      }
      
    • Modify a stored procedure

      public partial class MySecondMigration : DbMigration
      {
          public override void Up()
          {
              // Modify an existing stored procedure
              AlterStoredProcedure("dbo.DequeueMessages"
              // These are new stored procedure parameters
              , c => new{                
                  MessageCount = c.Int(),
                  StatusId = c.Int()
              },
              // Here is the new stored procedure body
              @"
              SET NOCOUNT ON;
              SELECT TOP (@MessageCount)
                  *
              FROM
                  dbo.MyTable
              WHERE
                  StatusId = @StatusId;
              ");
          }
      
          public override void Down()
          {
              // Rollback to the previous stored procedure
              // Modify an existing stored procedure
              AlterStoredProcedure("dbo.DequeueMessages"
              // These are old stored procedure parameters
              , c => new{                
                  MessageCount = c.Int()
              },
              // Here is the old stored procedure body
              @"
              SET NOCOUNT ON;
              SELECT TOP (@MessageCount)
                  *
              FROM
                  dbo.MyTable;
              ");              
          }
      }
      

提交回复
热议问题