我正在开发一个新项目,该项目将在一个容器中进行托管,因此我想在整个过程中与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