c#-具有ef核心迁移功能的.net core 2与docker正在开发中

我正在开发一个新项目,该项目将在一个容器中进行托管,因此我想在整个过程中与docker一起开发.但是,似乎从命令行运行的实体框架迁移并不了解正在运行的数据库服务.

我的连接字符串:

"DefaultConnection": "Server=db;Database=Site;User=sa;Password=pwd;"

我的泊坞窗撰写:

version: '3'

services:
  db:
    image: microsoft/mssql-server-windows-express
    environment:
          sa_password: "pwd"
          ACCEPT_EULA: "Y"
        networks:
          - testnetwork

  site:
    image: site
    build:
      context: .
      dockerfile: Site\Dockerfile
    environment:
      - "Data:SqlServerConnectionString=Server=db;Database=HSRDC;User Id=sa;Password=pwd;MultipleActiveResultSets=true;App=site"
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
          - "80"
        networks:
          - testnetwork
        depends_on:
          - db

    networks:
      testnetwork:
        external:
          name: nat

我的带有surecreated作品的启动:

public static void Initialize(CustomerDbContext context)
    {
        context.Database.EnsureCreated();

但是,在以后的开发中,我想过渡到迁移.当我尝试使用dotnet ef数据库更新错误更新数据库时:

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.

如果我检查容器并获取ip地址,然后更改连接字符串以包含IP,例如:

"DefaultConnection": "Server=172.20.159.97;Database=HSRDC;User=sa;Password=SFMasc32*;"

迁移将正常进行.

但是,这很笨拙,因为我需要运行以启动容器,然后停止并获取IP地址,然后使用IP修改它们的连接字符串,然后再次运行,然后通过CLI进行迁移.

我可以看到的选项是在撰写文件中指定IP地址,并在连接字符串中指定该IP的硬代码,但是在v3中,似乎无法指定IP address.

有没有一种方法可以使它与Visual Studio中的Docker进行开发并与迁移和Docker更加无缝地协作?

最佳答案
如果您的IP正常运行,但名称无效.然后尝试提供DBServer的全名,例如DBServer.domain.xyz

转载注明原文:c#-具有ef核心迁移功能的.net core 2与docker正在开发中 - 代码日志