回答
研究後,我終於找到了解決此問題的:
1)請Configuration
市民:
public sealed class Configuration : DbMigrationsConfiguration<YourContextClassHere>
2)添加以下的任意位置的代碼。它將運行最新的遷移並更新您的數據庫:
Configuration configuration = new Configuration();
configuration.ContextType = typeof(YourContextClassHere);
var migrator = new DbMigrator(configuration);
//This will get the SQL script which will update the DB and write it to debug
var scriptor = new MigratorScriptingDecorator(migrator);
string script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null).ToString();
Debug.Write(script);
//This will run the migration update script and will run Seed() method
migrator.Update();
這回答了第二部分的問題,但第一部分怎麼樣 如何從package-manager控制檯運行Seed()方法而不更新數據庫模型? –
我第二.. –
如果使用上下文initiliazer作爲MigrateDatabaseToLatestVersion,則應該自動運行配置中的種子方法。不要以爲你需要手動調用它。
回答問題#2:從Seed()方法中提取所有代碼到另一個類。然後調用從配置類種子()方法中:
protected override void Seed(DbContext ctx)
{
new DatabaseSeed().Seed(ctx);
}
然後你可以從任何地方調用它:
new DatabaseSeed().Seed(new DbContext());
回答你的第一個問題。通過運行添加遷移創建遷移SeedOnly
清除掉所有向上()和生成的代碼,如果有任何未決向下()改變
public partial class SeedOnly : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
然後,你可以通過運行更新數據庫,針對特定遷移-TargetMigration SeedOnly在Package Manager控制檯
我想這是最好的答案。這是驚人的,它有太少upvotes! – ehsan88
回答問題1:
人們通常會解決此有兩種方法:
- 製作一個臨時的人造模型更改
- 切換到DropCreateDatabaseAlways,其結果是數據庫往往是刪除並重新創建時,它不需要
- 手動刪除數據庫
參考:http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/
這不完全是你要找的,但是看看:Running Entity Framework Migrations via command line prompt 這可能會幫助你或某人忘記基於應用程序的數據庫mig日糧,因爲您可以輕鬆地讓腳本自動運行...
Yeap,它可能是有用的CI。謝謝。 – Maris
如果你想Update-Database --Target-Migration xxx
和你很驚訝,因爲我是seed()
方法尚未運行,你可以嘗試git stash
所有更改,使用Update-Database
(到它運行seed()
總是最後一個版本)產生不同版本的數據庫和然後git stash apply
。
這是醜陋的解決方法,但它幫助了我。
順便說一句:不要忘了積攢
好的,這是相當醜陋*咧嘴* – tofutim
- 1. 配置和運行Ruby-On-Rails遷移
- 2. EntityFramework遷移 - 每構建配置播種
- 3. IdentityDbContext如何運行遷移
- 4. 如何運行knex遷移
- 5. 實體框架遷移 - 種子即使沒有遷移也能運行?
- 6. 遷移後的Laravel種子
- 7. 運行Knex遷移
- 8. 運行的遷移
- 9. 如何在運行Laravel本地遷移時運行homestad上的遷移?
- 10. Heroku - 遷移失敗,如何更改遷移到Heroku上運行?
- 11. 如何在生產中運行遷移
- 12. 如何在Heroku上運行Flyway遷移?
- 13. 如何讓flyway重新運行遷移?
- 14. 如何在Appcelerator Alloy中運行遷移
- 15. heroku如何運行python manage.py遷移?
- 16. 如何在Capistrano運行遷移
- 17. 如何爲DataMapper運行特定遷移?
- 18. 如何檢查是否需要運行遷移或使用流利的遷移器運行遷移?
- 19. 配置DeviseSamlAuthenticatable rails後無法運行遷移gem
- 20. EF Code First遷移 - 如何將種子添加到我的遷移?
- 21. 在燒瓶中創建種子數據 - 遷移或alembic遷移
- 22. ASP MVC 5 EF6遷移和種子
- 23. EF代碼優先4.3:遷移/種子
- 24. 運行單個遷移無法遷移任何內容
- 25. Heroku的不運行遷移
- 26. 運行remove_column在軌遷移
- 27. 不能運行遷移
- 28. FluentMigrator未運行遷移
- 29. rails運行特定遷移
- 30. 運行遷移post_restart與pre_restart
我就遇到了這個問題與EF6前階段的更改,然後意識到我有錯誤的默認項目選擇,所以更新的數據庫沒有找到一個配置來運行。值得注意的是,在EF6中執行更新數據庫將始終運行Seed()方法。我不知道這是否寫在這是真的。 – allen1