我创建了一个新的 .Net 5 项目并想使用 EF Core。我使用自动生成了多个 migration.cs 文件
dotnet ef migrations add MyMigration
并希望应用它们(用于开发和生产)。我知道这个MigrateAsync方法,所以我阅读了如何在启动时调用这个方法
https://andrewlock.net/running-async-tasks-on-app-startup-in-asp-net-core-part-1/
但在我读到的任何地方,这种方法都不应该用于生产,因为这些迁移不会在单个事务中执行(没有错误回滚)。
不幸的是,无论环境如何,都没有太多关于如何做到这一点的资源,我找到了这篇文章
一种选择可能是调用迁移的控制台应用程序
但我无法理解这种方法的区别,因为它没有解决事务问题?
在开发/生产期间应用迁移的最佳实践是什么?
在自动生成迁移之后,我非常喜欢简单性,dotnet ef database update这项工作不需要我使用其他工具吗?
创建一个控制台应用程序,从迁移生成 .sql 文件,安装 DbUp 并将其用于迁移部分?
我正在考虑将Entity Framework 6 Code First数据库交互与DbUp数据库模式更新一起使用。问题是我不想使用EF迁移的原因。所以,我已经达到的工作流程是:
POCOs、更改属性等)Add-Migration temp_file进去Visual Studio Package Manager ConsoleUpdate-Database -Script进去Visual Studio Package Manager Consolesql脚本,包括在表中插入新行__MigrationHistory.sql文件并传递生成的脚本temp_file 它可以在本地和生产服务器上完美运行,但是temp_file每次生成新迁移时添加然后删除我都觉得不舒服(我希望有一种方法可以永久停止temp_file添加到解决方案中。)。
所以问题:
有没有更好的方法来DbUp使用 using进行数据库迁移Entity Framework?
我们有多个二进制文件/进程引用相同的后端数据库进行负载平衡,浏览了文档,但没有找到有关在并发环境中更新数据库的任何最佳实践的太多信息。
有谁在生产环境中遇到过这样的问题吗?
我正在尝试为我的微服务创建类似于Spotify 方法的集成测试。
I am still working on how to spin up and seed the database. Currently I have a .NET Core 2.0 project with FluentDocker v2.2.15 and DbUp 4.1.0.
I use FluentDocker to call DockerCompose and start my services, including the SQL Server container
var hosts = new Hosts().Discover();
var dockerHost = hosts.FirstOrDefault(x => x.IsNative) ?? hosts.FirstOrDefault(x => x.Name == "default");
if (dockerHost == null)
{
return;
}
var composeFile = Args["composeFile"];
var result = dockerHost.Host.ComposeUp(composeFile: composeFile);
Run Code Online (Sandbox Code Playgroud)
and …