Настройка
Основной веб-сайт Asp.NET 2.2 и EF Core 2.2
База данных Postgresql с несколькими схемами, одна из которых уже содержит __EFMigrationsHistory
таблицу.
при попытке
Add-Migration x1 -Context YodaContext
работает
но при попытке выполнить следующий оператор Update-Database -Context YodaContext
в первый раз (у меня нет таблиц в этой схеме, это первая база данных обновления) я вижу следующую ошибку.
Failed executing DbCommand (85ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT "MigrationId", "ProductVersion"
FROM "__EFMigrationsHistory"
ORDER BY "MigrationId";
Npgsql.PostgresException (0x80004005): 42P01: relation "__EFMigrationsHistory" does not exist
at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<<ReadMessage>g__ReadMessageLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<<ReadMessage>g__ReadMessageLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 1032
--- End of stack trace from previous location where exception was thrown ---
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming) in C:\projects\npgsql\src\Npgsql\NpgsqlDataReader.cs:line 444
at Npgsql.NpgsqlDataReader.NextResult() in C:\projects\npgsql\src\Npgsql\NpgsqlDataReader.cs:line 332
at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlCommand.cs:line 1218
at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\projects\npgsql\src\Npgsql\NpgsqlCommand.cs:line 1130
at System.Data.Common.DbCommand.ExecuteReader()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
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)
42P01: relation "__EFMigrationsHistory" does not exist
Что я сделал
Я искал эту ошибку и нашел эту ошибку на github. Предлагаемое решение должно было создать таблицу вручную, что я и сделал, но это не решило проблему.
Я также попытался открыть новый проект .NET 5 и установить последнюю версию поставщика
Npgsql.EntityFrameworkCore.PostgreSQL
v 5.0.0 для подключения к этой базе данных, и я все еще сталкиваюсь с этой проблемой.
этот вопрос не решает проблему EF Core — таблица '*.__EFMigrationsHistory' не существует
__EFMigrationsHistory
. Попробуйте выполнить это в базе данных, которой еще не существует, и это должно сработать. - person Shay Rojansky   schedule 22.11.2020__EFMigrationsHistory
таблицу. Попробуйте выполнить это в базе данных, которой еще не существует,даже если это сработает, а я думаю, что сработает, это не решит мою проблема, потому что я работаю на очень крупном предприятии, которое предоставляет мне базу данных - person Hakan Fıstık   schedule 23.11.2020update-database
работал отлично . Я не делал ничего особенного со своей стороны, я опубликую это как решение моей проблемы. - person Hakan Fıstık   schedule 25.11.2020