标签: dbup

如果不应该将 MigrateAsync() 用于生产环境,如何应用 EF Core 迁移?

我创建了一个新的 .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/

但在我读到的任何地方,这种方法都不应该用于生产,因为这些迁移不会在单个事务中执行(没有错误回滚)。

不幸的是,无论环境如何,都没有太多关于如何做到这一点的资源,我找到了这篇文章

https://www.thereformedprogrammer.net/handling-entity-framework-core-database-migrations-in-production-part-2

一种选择可能是调用迁移的控制台应用程序

https://www.thereformedprogrammer.net/handling-entity-framework-core-database-migrations-in-production-part-2/#1b-calling-context-database-migrate-via-a-console-app-or -管理员命令

但我无法理解这种方法的区别,因为它没有解决事务问题?

在开发/生产期间应用迁移的最佳实践是什么?

  • 在自动生成迁移之后,我非常喜欢简单性,dotnet ef database update这项工作不需要我使用其他工具吗?

  • 创建一个控制台应用程序,从迁移生成 .sql 文件,安装 DbUp 并将其用于迁移部分?

c# entity-framework-core dbup

7
推荐指数
1
解决办法
448
查看次数

使用 DbUp 的实体框架代码优先

我正在考虑将Entity Framework 6 Code First数据库交互与DbUp数据库模式更新一起使用。问题是我不想使用EF迁移的原因。所以,我已经达到的工作流程是:

  1. 更改模型(添加POCOs、更改属性等)
  2. Add-Migration temp_file进去Visual Studio Package Manager Console
  3. Update-Database -Script进去Visual Studio Package Manager Console
  4. 获取生成的sql脚本,包括在表中插入新行__MigrationHistory
  5. 创建一个新.sql文件并传递生成的脚本
  6. 删除 temp_file
  7. 运行数据库

它可以在本地和生产服务器上完美运行,但是temp_file每次生成新迁移时添加然后删除我都觉得不舒服(我希望有一种方法可以永久停止temp_file添加到解决方案中。)。

所以问题: 有没有更好的方法来DbUp使用 using进行数据库迁移Entity Framework

c# entity-framework database-migration dbup

6
推荐指数
1
解决办法
3700
查看次数

在并发环境中使用 dbup

我们有多个二进制文件/进程引用相同的后端数据库进行负载平衡,浏览了文档,但没有找到有关在并发环境中更新数据库的任何最佳实践的太多信息。

有谁在生产环境中遇到过这样的问题吗?

.net c# microservices dbup

6
推荐指数
0
解决办法
196
查看次数

C# + DockerCompose - 在尝试连接之前等待 MS SQL Server Docker 容器启动

我正在尝试为我的微服务创建类似于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 …

c# sql-server docker-compose dbup fluent-docker

5
推荐指数
1
解决办法
3216
查看次数