更新数据库在代码优先中不起作用
update-database not working in Code first
我正在使用实体框架和 Codefirst 创建存储过程。
正如我所说,我们应该在包管理器中执行一些步骤来创建 SP。
1 - 启用迁移
2- 添加迁移 MYclass
3-更新数据库
并且在 Myclass(new created)
我在 UP() 方法中编写了我的 SP 代码来创建 SP。工作正常!!但是,当我再次更改 SP 和 运行 更新数据库时,它不起作用,我需要执行另一个添加迁移命令来创建新的 MYclass2。那正确吗?我的意思是每次我都应该写添加迁移?
这是我的代码
public override void Up()
{
Sql(@"Create procedure testSp
as
select std.Id as stdName, std.Name as MajorName, mj.Name from dbo.Students as std
inner join dbo.Majors as mj on std.Id = mj.Id
");
}
public override void Down()
{
Sql("drop procedure testSp");
}
当我再次 运行 更新数据库时,结果是 "No pending explicit migration"
即使我将 SQL 查询更改为 "Alter procedure...." 它也不起作用,没有任何变化发生。
谢谢
已编辑
考虑到这种情况,我想更改我的 SP 名称(只是一个例子)
所以我需要将查询更改为 "Alter store procedure tespSP2 ..."
或任何其他更改,我应该 运行 再次添加迁移吗?或者 update-database 应该这样做??
in entity framework migrations added to a _migrationHistory table,你可以删除这个table的最后一行[不推荐]
或者您可以使用 rollback/undo 命令
Update-Database -TargetMigration:MigrationsName
然后使用update-database -force
我正在使用实体框架和 Codefirst 创建存储过程。 正如我所说,我们应该在包管理器中执行一些步骤来创建 SP。
1 - 启用迁移
2- 添加迁移 MYclass
3-更新数据库
并且在 Myclass(new created)
我在 UP() 方法中编写了我的 SP 代码来创建 SP。工作正常!!但是,当我再次更改 SP 和 运行 更新数据库时,它不起作用,我需要执行另一个添加迁移命令来创建新的 MYclass2。那正确吗?我的意思是每次我都应该写添加迁移?
这是我的代码
public override void Up()
{
Sql(@"Create procedure testSp
as
select std.Id as stdName, std.Name as MajorName, mj.Name from dbo.Students as std
inner join dbo.Majors as mj on std.Id = mj.Id
");
}
public override void Down()
{
Sql("drop procedure testSp");
}
当我再次 运行 更新数据库时,结果是 "No pending explicit migration"
即使我将 SQL 查询更改为 "Alter procedure...." 它也不起作用,没有任何变化发生。 谢谢
已编辑
考虑到这种情况,我想更改我的 SP 名称(只是一个例子) 所以我需要将查询更改为 "Alter store procedure tespSP2 ..." 或任何其他更改,我应该 运行 再次添加迁移吗?或者 update-database 应该这样做??
in entity framework migrations added to a _migrationHistory table,你可以删除这个table的最后一行[不推荐]
或者您可以使用 rollback/undo 命令
Update-Database -TargetMigration:MigrationsName
然后使用update-database -force