【问题标题】:How to reverse engineer Postgres 9.0 database如何对 Postgres 9.0 数据库进行逆向工程
【发布时间】: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 很快就会这样做。

标签: postgresql entity-framework-core npgsql .net-6.0 asp.net-mvc-scaffolding


【解决方案1】:

我已经为 6.0.2 修复了这个问题,请参阅 https://github.com/npgsql/efcore.pg/issues/2160

如果您不在 github 和 stackoverflow 上交叉发布相同的问题会更好 - 它主要在两个地方创建更多的工作回答。如果某些东西看起来像 Npgsql 错误,并且 issue 应该足够了,否则 stackoverflow 适合使用问题等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-22
    • 2012-10-09
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多