如何对 Postgres 9.0 数据库进行逆向工程
Posted
技术标签:
【中文标题】如何对 Postgres 9.0 数据库进行逆向工程【英文标题】:How to reverse engineer Postgres 9.0 database 【发布时间】:2022-01-20 14:27:02 【问题描述】:ASP.NET Core 6 MVC 应用程序使用 EF Core 和 Npgsql。
使用 Postgres 9.0 数据库逆向工程
scaffolder.ScaffoldModel(connectionString.ToString(), dbOpts, modelOpts, codeGenOpts);
抛出异常
Npgsql.PostgresException (0x80004005): 42703: 列“enumsortorder”不存在
在 sql 中
SELECT
nspname,
typname,
array_agg(enumlabel ORDER BY enumsortorder) AS labels
FROM pg_enum
JOIN pg_type ON pg_type.oid = enumtypid
JOIN pg_namespace ON pg_namespace.oid = pg_type.typnamespace
GROUP BY nspname, typname
带有堆栈跟踪
在 Npgsql.Internal.NpgsqlConnector.g__ReadMessageLong|213_0(NpgsqlConnector 连接器,布尔异步,DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) 在 Npgsql.NpgsqlDataReader.NextResult(布尔异步,布尔 isConsuming, CancellationToken 取消令牌)在 Npgsql.NpgsqlDataReader.NextResult() 在 Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior 行为,布尔值 异步,CancellationToken 取消令牌)在 Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior 行为,布尔值 异步,CancellationToken 取消令牌)在 Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.GetEnums(NpgsqlConnection 连接,DatabaseModel 数据库模型)在 Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(DbConnection dbConnection、DatabaseModelFactoryOptions 选项)在 Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(字符串 connectionString,DatabaseModelFactoryOptions 选项)在 Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(字符串 连接字符串,DatabaseModelFactoryOptions 数据库选项, ModelReverseEngineerOptions 模型选项,模型代码生成选项 代码选项)
如何在 .NET6 中对 Postgres 9.0 数据库进行逆向工程?枚举数据类型几乎不用。
【问题讨论】:
我建议备份数据库并在更高版本的 Postgres 实例上恢复,然后在 Scaffold 上恢复。不要以为 Npgsql 很快就会这样做。 【参考方案1】:我已经为 6.0.2 修复了这个问题,请参阅 https://github.com/npgsql/efcore.pg/issues/2160。
如果您不在 github 和 *** 上交叉发布相同的问题会更好 - 它主要在两个地方创建更多的工作回答。如果某些东西看起来像 Npgsql 错误,并且 issue 应该足够了,否则 *** 适合使用问题等。
【讨论】:
以上是关于如何对 Postgres 9.0 数据库进行逆向工程的主要内容,如果未能解决你的问题,请参考以下文章
关于powerDesigner连接mysql数据库进行逆向工程的问题。
如何将 PostgreSQL 数据源添加到 WildFly 9.0?