Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Docker在SQL Server数据库上运行EF Core迁移?_Docker_Asp.net Core_Entity Framework Core - Fatal编程技术网

如何使用Docker在SQL Server数据库上运行EF Core迁移?

如何使用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

在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
  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添加一些参数以控制行为