ASP.NET Core Mac Docker 上 SQL Server 运行 的连接字符串是什么?
What is the connection string for SQL Server running on Mac Docker in ASP.NET Core?
我正试图在 MAC 上完成关于 Pluralsight 的 ASP.NET 核心教程。我正在使用 Docker 运行ning MSSQL 服务器,它似乎工作正常(我有 sql 数据库并且 运行ning
as shown here)
第二步是让我的 asp.net 核心应用程序连接到这个 mssql 数据库。这是我在 appsettings.json:
中的连接字符串
"ConnectionStrings": {
"OdeToFood2Db": "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=OdeToFood2;Integrated Security=True"
}
这就是我在 startup.cs:
中的 ConfigureServices()
services.AddDbContextPool<OdeToFood2DbContext>(
options =>
{
options.UseSqlServer(Configuration.GetConnectionString("OdeToFood2Db"));
}
);
然后我尝试 运行
dotnet ef dbcontext info -s ../OdeToFood2/odeToFood2.csproj
但我得到了
Build started...
Build failed. Use dotnet build to see the errors.
错误。
我认为问题是我的连接字符串错误,因为我 运行 在 docker 上设置了我的 mssql 而不是像我正在关注的 tutorial 在本地。
如果有人能给我指出正确的方向,那肯定会有所帮助,我已经在这个问题上停留了 5 天了,这真是令人痛苦。提前致谢!
Docker 运行 在你的机器上有自己的内部虚拟网络,发现你的 SQL 容器的 IP/Hostname 应该有所帮助,因为从技术上讲你的 SQL实例 运行 正在容器中。
在你的 docker 机器上 运行
docker ps
这应该列出所有 运行ning 容器,其中一个应该是您的 SQL 容器。输出应类似于:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8b6facb199c SQL-Image "some command" X days ago Up X days 8080 sqlserver
感兴趣的是 ports 和 name 字段。您的端口字段应至少列出一个端口,这可能是您正在使用的 SQL 提供商的默认端口,但也可能不是。
我们现在有尝试连接的端口,现在我们需要 IP 地址。 运行 以下是上一个命令中 name 字段的值(或使用容器 ID)
docker inspect <image-name>
这将转储容器的属性,包括 IP 地址,这可能是 172.x IP 地址。
现在我们有了端口和 IP 地址,您应该可以修改连接字符串以指向这些值。
"ConnectionStrings": {
"MyWindowsConnection": "Server=(localdb)\mssqllocaldb;Database=TestWinMac;Trusted_Connection=True;",
"MyMacConnection": "Server=localhost,1433;Initial Catalog=TestWinMac;User ID=SA;Password=MyP@ssword"
}
查看我的标题为“我的Mac连接”的连接。 1433 是端口。
我有一个项目存在于 Mac 和 Windows 机器上,我根据我正在使用的平台切换连接字符串。
我正试图在 MAC 上完成关于 Pluralsight 的 ASP.NET 核心教程。我正在使用 Docker 运行ning MSSQL 服务器,它似乎工作正常(我有 sql 数据库并且 运行ning as shown here)
第二步是让我的 asp.net 核心应用程序连接到这个 mssql 数据库。这是我在 appsettings.json:
中的连接字符串 "ConnectionStrings": {
"OdeToFood2Db": "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=OdeToFood2;Integrated Security=True"
}
这就是我在 startup.cs:
中的 ConfigureServices()services.AddDbContextPool<OdeToFood2DbContext>(
options =>
{
options.UseSqlServer(Configuration.GetConnectionString("OdeToFood2Db"));
}
);
然后我尝试 运行
dotnet ef dbcontext info -s ../OdeToFood2/odeToFood2.csproj
但我得到了
Build started...
Build failed. Use dotnet build to see the errors.
错误。 我认为问题是我的连接字符串错误,因为我 运行 在 docker 上设置了我的 mssql 而不是像我正在关注的 tutorial 在本地。
如果有人能给我指出正确的方向,那肯定会有所帮助,我已经在这个问题上停留了 5 天了,这真是令人痛苦。提前致谢!
Docker 运行 在你的机器上有自己的内部虚拟网络,发现你的 SQL 容器的 IP/Hostname 应该有所帮助,因为从技术上讲你的 SQL实例 运行 正在容器中。
在你的 docker 机器上 运行
docker ps
这应该列出所有 运行ning 容器,其中一个应该是您的 SQL 容器。输出应类似于:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8b6facb199c SQL-Image "some command" X days ago Up X days 8080 sqlserver
感兴趣的是 ports 和 name 字段。您的端口字段应至少列出一个端口,这可能是您正在使用的 SQL 提供商的默认端口,但也可能不是。
我们现在有尝试连接的端口,现在我们需要 IP 地址。 运行 以下是上一个命令中 name 字段的值(或使用容器 ID)
docker inspect <image-name>
这将转储容器的属性,包括 IP 地址,这可能是 172.x IP 地址。
现在我们有了端口和 IP 地址,您应该可以修改连接字符串以指向这些值。
"ConnectionStrings": {
"MyWindowsConnection": "Server=(localdb)\mssqllocaldb;Database=TestWinMac;Trusted_Connection=True;",
"MyMacConnection": "Server=localhost,1433;Initial Catalog=TestWinMac;User ID=SA;Password=MyP@ssword"
}
查看我的标题为“我的Mac连接”的连接。 1433 是端口。 我有一个项目存在于 Mac 和 Windows 机器上,我根据我正在使用的平台切换连接字符串。