如何使用Docker在SQL Server数据库上运行EF Core迁移?
在Mac上,我有一个NetCore2.1类库,其中包含一些实体框架迁移 我需要使用Docker运行SQL Server,并使用预览迁移更新数据库 我在项目中添加了docker-compose.yml文件:如何使用Docker在SQL Server数据库上运行EF Core迁移?,docker,asp.net-core,entity-framework-core,Docker,Asp.net Core,Entity Framework Core,在Mac上,我有一个NetCore2.1类库,其中包含一些实体框架迁移 我需要使用Docker运行SQL Server,并使用预览迁移更新数据库 我在项目中添加了docker-compose.yml文件: docker-compose.yml src data project.data.csproj docker-compose.yml文件如下所示: services: data: build: . depends_on: - database
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 migrations?您需要添加以下行以确认启动文件。它将在应用程序启动时执行。它会将所有迁移文件更新到数据库
using (IServiceScope scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetService<MyDBCOntext>().Database.Migrate();
}
使用(IServiceScope范围=app.ApplicationServices.GetRequiredService().CreateScope())
{
scope.ServiceProvider.GetService().Database.Migrate();
}
这对我很有用。我有两种方法,让Docker在容器构建期间或在运行时执行
dotnet ef数据库更新
,您可以使用database.Migrate()
,这适合您的情况?我使用dotnet ef数据库更新您要求的是什么?这是一个好问题,但我认为目前还没有一个可靠的解决方案。正如@AdamVincent所建议的,运行时迁移在我看来是一个自然的解决方案。如果出于某种原因希望手动运行迁移,请向program/appsettings添加一些参数以控制行为