tutorial net mvc migrations how framework foreign first espaƱol create code asp sql-server asp.net-mvc entity-framework code-first

sql server - net - Code First Migrations y procedimientos almacenados



how to create foreign key in entity framework code first mvc (2)

He hecho esto así ...

En la clase de migración actual -

public partial class MyMigration : DbMigration { public override void Up() { ... other table creation logic // This command executes the SQL you have written // to create the stored procedures Sql(InstallScript); // or, to alter stored procedures Sql(AlterScript); } public override void Down() { ... other table removal logic // This command executes the SQL you have written // to drop the stored procedures Sql(UninstallScript); // or, to rollback stored procedures Sql(RollbackScript); } private const string InstallScript = @" CREATE PROCEDURE [dbo].[MyProcedure] ... SP logic here ... "; private const string UninstallScript = @" DROP PROCEDURE [dbo].[MyProcedure]; "; // or for alters private const string AlterScript = @" ALTER PROCEDURE [dbo].[AnotherProcedure] ... Newer SP logic here ... "; private const string RollbackScript = @" ALTER PROCEDURE [dbo].[AnotherProcedure] ... Previous / Old SP logic here ... "; }

Acabo de crear una base de datos y realicé mi primera migración (solo una tabla simple). Ahora quiero agregar algunos procedimientos almacenados que acabo de agregar escribiendo el sql y ejecutándolo en Management Studio. Pero me gustaría incluir estos procedimientos almacenados si es posible en una migración para que se guarden y pueda ejecutar un método Arriba o Abajo en su contra. ¿Es esto posible y, en caso afirmativo, qué sintaxis debe utilizarse? ¿O tendré que agregar / editar / eliminarlos usando Management Studio?


Estoy usando EF6 y la clase DbMigration proporciona métodos para crear / modificar / eliminar procedimientos almacenados

  • Crear un nuevo procedimiento almacenado

    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"); } }

  • Modificar un procedimiento almacenado

    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; "); } }