在我的aspnet.core项目中,我想使用dockerized的postgresql映像。
容器运行正常。 (我正在使用Windows,但服务器在ubuntu18.04服务器上运行)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a01980eb90bc postgres:11.4 "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:5432->5432/tcp pg
appsettings.json文件看起来像
"ConnectionStrings": {
"LibvirtConnection": "User ID =postgres;Password=*****;Server=185.22.98.7:5432;Port=5432;Database=libvirt;Integrated Security=true;Pooling=true;"
},
启动类看起来像
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddEntityFrameworkNpgsql().AddDbContext<AppDbContext>(opt =>
opt.UseNpgsql(Configuration.getconnectionString("LibvirtConnection")));
}
尝试运行dotnet ef数据库更新时出现异常
dotnet ef database update
info: microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.2.6-servicing-10079 initialized 'AppDbContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: None
System.Net.Sockets.SocketException (11001): No such host is known
at System.Net.Dns.InternalGetHostByName(String hostName)
at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 663
at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,Boolean async,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 555
at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 414
at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnection.cs:line 273
--- End of stack trace from previous location where exception was thrown ---
at Npgsql.NpgsqlConnection.Open() in C:\projects\npgsql\src\Npgsql\NpgsqlConnection.cs:line 153
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() in C:\projects\npgsql-entityframeworkcore-postgresql\src\EFCore.PG\S at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() in C:\projects\npgsql-entityframeworkcore-postgresql\src\EFCore.PG\Storage\Internal\NpgsqlDatabaseCreator.cs:line 190
at microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration,String contextType)
at microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
at microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(action action)
No such host is known