Npgsql 异常:列 c.consrc 不存在

Posted

技术标签:

【中文标题】Npgsql 异常:列 c.consrc 不存在【英文标题】:Npgsql exception: Column c.consrc does not exist 【发布时间】:2020-06-01 04:41:41 【问题描述】:

我有一个 Postgres 12 数据库,目前只包含一个简单的表:

CREATE TABLE public.messages
(
    sender text COLLATE pg_catalog."default",
    "timestamp" timestamp with time zone,
    message_id bigint,
    text text COLLATE pg_catalog."default",
    priority bigint,
    parameters text[] COLLATE pg_catalog."default"
)

不,我想使用 Npgsql 使用 C# 和实体框架构建 GUI。我安装了 Nuget 包:

Install-Package EntityFramework6.Npgsql

它成功了:

Successfully installed 'EntityFramework6.Npgsql 6.4.0' to TestClient

接下来,我为 VS 2019 (found here) 安装了 Npgsql 集成。当我尝试通过在解决方案资源管理器中右键单击它来将 ADO.NET 实体数据模型添加到我的项目时,我可以添加一个连接并且连接测试成功(在向导中完成)。我可以继续选择我的表,但只要我按下完成,我就会收到错误消息:

这是控制台输出:

由于以下异常,无法生成模型: 'System.Data.Entity.Core.EntityCommandExecutionException:一个错误 执行命令定义时发生。见内 细节例外。 ---> Npgsql.PostgresException: 42703: 列 c.consrc 不存在

我能做什么?

【问题讨论】:

您使用的是哪个 .Net 框架?如果是.Net Core,需要Npgsql.EntityFrameworkCore.PostGreSQL 我正在使用/定位 .NET Framework 4.6(不是 .NET Core)和 Windows 窗体,所以我认为这个包应该没问题。 【参考方案1】:

PG12 删除了 pg_constraint.consrc,这是 PG12 跟踪的删除了 pg_constraint.consrc。在发布修复程序之前,降级到 PG11 应该可以工作。

【讨论】:

注意:刚刚发布了 EntityFramework6.Npgsql 6.4.1 并对此进行了修复,您可以尝试一下吗? 现在可以使用了,感谢更新!但是next problem is already there ;-)

以上是关于Npgsql 异常:列 c.consrc 不存在的主要内容,如果未能解决你的问题,请参考以下文章

连接字符串上的 Npgsql 异常

异常值:列 home_profile.goal 不存在

使用 Daper.Net 和 NPGSQL 将数据插入 PostgreSQL jsonb 列

LINQ to SQL [npgsql] 从 SelectMany 生成不正确的查询

如何处理表或视图不存在异常?

NPGSQL:使用 LWGEOMCOLLECTION 类型调用的关联操作