我正在努力完成ASP.NET的核心教程在一个MAC上的Pluralsight。我正在使用Docker运行MSSQL,它似乎可以工作(我已经启动了sql数据库并运行了如图所示)。
第二步是让我的asp.net核心应用程序与这个mssql数据库连接。下面是我在appsettings.json中的连接字符串的内容:
"ConnectionStrings": {
"OdeToFood2Db": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=OdeToFood2;Integrated Security=True"
}这就是我在ConfigureServices()内部startup.cs中拥有的内容:
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,而不是在本地运行我所遵循的教程。
如果有人能给我指明正确的方向,这肯定会帮上很多忙,我已经在这个问题上被困了5天了,这是令人痛苦的。提前感谢!
发布于 2021-07-02 08:21:10
Docker在您的机器上运行自己的内部虚拟网络,发现SQL容器的IP/Hostname应该会有所帮助,因为从技术上讲,SQL实例在容器中运行。
在你的码头机器上运行
docker ps这应该列出所有正在运行的容器,其中之一应该是SQL容器。输出应该类似于:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8b6facb199c SQL-Image "some command" X days ago Up X days 8080 sqlserver感兴趣的是端口、和名称字段。端口字段应该列出至少一个端口,这可能是您正在使用的SQL提供程序的默认值,但它可能不是。
我们现在有了要连接的端口,现在我们需要IP地址。在前面命令中的name字段中运行以下值(或使用容器ID)
docker inspect <image-name>这将转储容器的属性,包括IP地址,这很可能是一个172.xIP地址。
现在我们有了端口和IP地址,您应该能够修改连接字符串来指向这些值。
发布于 2022-04-05 15:46:45
"ConnectionStrings": {
"MyWindowsConnection": "Server=(localdb)\\mssqllocaldb;Database=TestWinMac;Trusted_Connection=True;",
"MyMacConnection": "Server=localhost,1433;Initial Catalog=TestWinMac;User ID=SA;Password=MyP@ssword"
}请看我的连接,标题为"MyMacConnection“。1433年是港口。我有一个同时存在于Mac和Windows机器上的项目,我根据使用的平台切换连接字符串。
https://stackoverflow.com/questions/68217097
复制相似问题