#postgresql #entity-framework #.net-core #entity-framework-core #ef-code-first
Вопрос:
И API, и база данных работают в контейнерах docker. Я использую базу данных postgresql и первый подход к коду entity framework для базы данных. Я могу выполнить миграцию добавления, но когда я запускаю миграцию удаления, я получаю странную ошибку. Подробная информация об исключении приведена ниже:
Entity Framework Core 5.0.11 initialized 'DataContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: MigrationsAssembly=Moodys.Ag.Ceres.Data MigrationsHistoryTable=public.__EFMigrationsHistory using snake-case naming (culture=) System.Net.Sockets.SocketException (11001): No such host is known. at System.Net.Dns.GetHostEntryOrAddressesCore(String hostName, Boolean justAddresses) at System.Net.Dns.GetHostAddresses(String hostNameOrAddress) at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout) at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnection.lt;gt;c__DisplayClass41_0.lt;lt;Opengt;g__OpenAsync|0gt;d.MoveNext() --- End of stack trace from previous location --- at Npgsql.NpgsqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected) at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken) at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken) at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists() at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations() at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force, String language) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.RemoveMigration(String contextType, Boolean force) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigrationImpl(String contextType, Boolean force) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigration.lt;gt;c__DisplayClass0_0.lt;.ctorgt;b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.lt;gt;c__DisplayClass3_0`1.lt;Executegt;b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) No such host is known.
Комментарии:
1. пожалуйста, также добавьте команды, которые вы используете для добавления и удаления миграций.
2. @Ali Zeinali: «удалить-миграция» — это команда, используемая в консоли диспетчера пакетов.
Ответ №1:
Я нашел временное решение, которое использует remove-migration -Force
команду. Он удаляет последний файл миграции и возвращает снимок модели. Но у него есть предупреждение, которое все еще связано с ошибкой, которую я опубликовал в вопросе. Проблема в том, что remove-migration каким-то образом не может подключиться к базе данных с данного хоста и выдает «Такой хост неизвестен».
Я все еще ищу решение, для которого не нужно применять Силу. Поэтому, если кто-то найдет решение этой проблемы, пожалуйста, опубликуйте его здесь.
Спасибо!