好的,所以我完全依赖我的迁移和种子代码来维护所有数据库结构和初始数据。因此,我面临的情况是,我在此版本中所做的所有更改都直接在数据库(存储过程和更新)上进行,而C#代码本身没有任何更改。因为我想使用新的迁移来做这些DataBase特定的更改(并且“添加迁移”不会执行任何操作 - 导致代码没有更改),所以如何强制新的空代码第一次迁移将我的更改手动放在它上面?如何强制执行新的空EF迁移?
回答
您必须添加一个空的迁移并手动将代码添加到Up和Down方法中。我发现人们倾向于认为这些方法的代码必须由类似于“.designer”文件的工具生成,而事实并非如此。事实上,我经常发现自己编辑并在其中添加代码。 为此,我把所有的SQL代码,我在脚本文件来执行,然后在向上的方法是这样的执行:
public override void Up(){
var dirBase = AppDomain.CurrentDomain.BaseDirectory.Replace(@"\bin",string.Empty) + @"\Migrations\SqlScripts";
Sql(File.ReadAllText(dirBase + @"\CreateMyViews.sql"));
Sql(File.ReadAllText(dirBase + @"\CreateMySproc.sql"));
}
public override void Down(){
var dirBase = AppDomain.CurrentDomain.BaseDirectory.Replace(@"\bin",string.Empty) + @"\Migrations\SqlScripts";
Sql(File.ReadAllText(dirBase + @"\DropMySproc.sql"));
Sql(File.ReadAllText(dirBase + @"\DropMyViews.sql"));
}
我建议你读这个链接: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
问题是:一旦我创建了一个迁移.cs文件,使用DbMigration的部分类,部分的Up和Down方法(与“add-migration”命令创建的方法完全一样),然后运行“update-database”它只是简单地报告“没有正在进行的基于代码的迁移”...:/ –
您必须像通常那样使用添加迁移来创建文件。之后,您将拥有一个空的迁移文件,即您必须编辑Up和Down方法(如我提供的示例代码)。这样Update-Database将完成它的工作。 –
在包管理器控制台发出命令
Add-Migration "My new empty migration"
这会产生这种迁移模板
public partial class Mynewemptymigration : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
然后,您可以创建自己的自定义向上和向下迁移步骤。如果你的模型不是最新的,那么上下就会有迁移代码。在这种情况下,您需要更新您的模型,然后添加一个新的空迁移。
- 1. EF 6迁移:如何执行sql SELECT?
- 2. “重新激活”EF迁移
- 3. 卡在EF迁移限制
- 4. EF迁移 - 启用迁移
- 5. EF核心并发未强制执行
- 6. EF 6.0迁移:MigrationHistory中的ContextKey为空
- 7. 可能强制从命令行迁移?
- 8. EF迁移:自动迁移中的RenameColumn?
- 9. 如何执行SQLite到PostgreSQL的迁移?
- 10. 强制LINQ重新执行?
- 11. 执行我的EF迁移中的SQL查询
- 12. EF核心迁移
- 13. EF迁移问题
- 14. EF迁移到Oracle
- 15. EF迁移 - 在单个迁移
- 16. EF迁移被复制报表
- 17. 如何在EF Core代码首次迁移中进行数据迁移?
- 18. 如何还原EF迁移并创建新的数据库表
- 19. 如何忽略EF 4.3迁移表/类
- 20. 确定执行EF迁移时是否存在表格
- 21. 在EF迁移中自定义代码执行
- 22. 执行添加迁移时EF 5&VS 11错误
- 23. EF迁移 - 种子仅在连接到调试器时执行
- 24. 强制执行
- 25. 强制执行
- 26. 强制执行
- 27. 在基于EF代码的迁移之前运行更新
- 28. 运行EF迁移时出错
- 29. 如何在没有任何迁移的情况下强制新种子
- 30. 强制执行空JSON模式
可能的重复http://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entity-framework-4-1-code-firs –
不重复,这是问题是关于基于代码的迁移,而您指向的另一个关于代码优先。 –