如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?
Posted
技术标签:
【中文标题】如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?【英文标题】:How to run EF Core migrations on SQL Server database using Docker? 【发布时间】:2019-04-11 12:23:58 【问题描述】:在 Mac 上,我有一个带有一些实体框架迁移的 Net Core 2.1 类库。
我需要使用 Docker 运行 SQL Server 并使用预览迁移更新数据库。
我在我的项目中添加了一个 docker-compose.yml 文件:
docker-compose.yml
src
data
project.data.csproj
docker-compose.yml 文件如下:
services:
data:
build: .
depends_on:
- database
database:
image: "microsoft/mssql-server-linux"
environment:
SA_PASSWORD: "Pass.word123"
ACCEPT_EULA: "Y"
目前这不起作用。
如何在 Mac 中使用 docker 在 SQL Server 上运行 EF Core 迁移?
【问题讨论】:
在我看来有两种方法,让 Docker 在容器构建期间执行dotnet ef database update
或在运行时您可以使用 Database.Migrate()
,这适合您的情况吗?
我使用 dotnet ef 数据库更新
您的要求正在讨论中in this issue on GitHub
这是一个很好的问题,但我认为目前还没有可靠的解决方案。
正如@AdamVincent 建议的那样,运行时迁移对我来说似乎是自然的解决方案。如果您出于某种原因想要手动运行迁移,请在 program/appsettings 中添加一些参数来控制行为
【参考方案1】:
您需要在启动文件的配置中添加以下行。它将在应用程序启动时执行。它将所有迁移文件更新到数据库。
using (IServiceScope scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
scope.ServiceProvider.GetService<MyDBCOntext>().Database.Migrate();
这对我有用。
【讨论】:
以上是关于如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?
如何在不使用 Docker 或 Windows Server 2016 上的 Confluent 平台的情况下在 Kafka 中设置 Debezium SQL Server 连接器?
如何在 SQL Server docker 映像之上安装 PowerShell Core?
如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器