gpt4 book ai didi

c# - 没有更新数据库的 EF6 种子

转载 作者:太空狗 更新时间:2023-10-29 23:38:45 25 4
gpt4 key购买 nike

我现在设置了一个应用程序来使用 EF6 代码优先迁移。我使用 Add-Migration 的标准工作流程,然后在控制台中使用 Update-Database。我在本地以及我们的开发环境中使用 MigrateDatabaseToLatestVersion 初始化程序。这会自动为我和其他开发人员处理所有迁移。

我不愿意在生产环境中进行自动迁移,所以我运行了 Update-Database -script 来生成一个 SQL 脚本,我可以在运行前查看它。这非常有效,我对这个部署过程很满意。但是,我意识到 SEED 方法永远不会运行,因为 Update-Database 没有直接在数据库上运行。

我正在寻找一种让迁移配置上的 SEED 方法在不运行实际迁移的情况下运行的好方法。我发现 migrate.exe ( http://msdn.microsoft.com/en-us/data/jj618307.aspx ) 看起来可能没问题,但我想看看是否有人知道更好的方法。

此外,可能更重要的是,考虑到我已经通过采用 EF6 固有地使用了多少自动化,我担心生产中的自动迁移是不是很荒谬?

谢谢!

最佳答案

仅供引用 - 对于那些感兴趣的人 - 我最终创建了我自己的调用共享种子逻辑的数据库初始化器。我将所有种子代码移至静态“种子”类的执行方法。然后我创建了一个简单的 DatabaseInitializer,我在我的生产 web.config 中使用它。我仍然在 Dev 和本地使用 MigrateToLatestVersion 作为我的初始化程序,它就像一个魅力。

public class SeedOnlyInitializer : IDatabaseInitializer<YourContextType>  {

public void InitializeDatabase(YourContextType context)
{
Seed.Execute(context);
context.SaveChanges();
}
}

感谢 Baximilian 为我指明了正确的方向。答案并没有完全符合我的要求,但它帮助我想到了这个。

关于c# - 没有更新数据库的 EF6 种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com