如何处理 Npgsql 中的 text[] 数组字段类型?
How to deal with a text[] array field type in Npgsql?
我有一个带有单个 table:
的 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"
)
现在,当我想通过右键单击项目在 met .NET Winforms(不是 .NET Core)应用程序中使用此 table 时,添加新项目,ADO.NET 实体数据模型, EF Code First 来自数据库,配置我的连接(连接测试成功),选择我的 table,我收到此错误:
Severity Code Description Project File Line Suppression State
Warning Error 6005: The data type '_text' is currently not supported
for the target Entity Framework version; the column 'parameters' in
the table 'test.public.messages' was
excluded. LogTest D:\Projekte\LogTest\Model1.cs 1
parameters
字段没有进入消息 class:
[Table("public.messages")]
public partial class message
{
public long id { get; set; }
public string sender { get; set; }
public DateTimeOffset? timestamp { get; set; }
public long? base_message_id { get; set; }
public string text { get; set; }
public long? priority { get; set; }
}
除了 parameters
,该模型有效,我可以从数据库中获取数据。当我尝试手动添加 属性 时,它仍然运行,但参数始终为空:
public string[] parameters { get; set; } // also tried List<string>
我怎样才能让它发挥作用?根据我阅读文档时的理解,我认为这应该是可能的?
我的应用程序以 .NET Framework 4.6 为目标,我正在使用 EntityFramework6.Npgsql 版本 6.4.1.0 和 Npgsql 版本 4.0.10.0。
映射数组在 EF6 中不受支持,并且可能永远不会支持 - EF6 的类型模型非常closed/restricted,并且不允许公开特定于数据库的类型(尤其是像数组这样的复杂情况) .
EF Core 提供程序确实对 PostgreSQL 数组提供了很好的支持,如果它们是您正在做的事情的核心,我建议您考虑使用 Core。
我有一个带有单个 table:
的 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"
)
现在,当我想通过右键单击项目在 met .NET Winforms(不是 .NET Core)应用程序中使用此 table 时,添加新项目,ADO.NET 实体数据模型, EF Code First 来自数据库,配置我的连接(连接测试成功),选择我的 table,我收到此错误:
Severity Code Description Project File Line Suppression State Warning Error 6005: The data type '_text' is currently not supported for the target Entity Framework version; the column 'parameters' in the table 'test.public.messages' was excluded. LogTest D:\Projekte\LogTest\Model1.cs 1
parameters
字段没有进入消息 class:
[Table("public.messages")]
public partial class message
{
public long id { get; set; }
public string sender { get; set; }
public DateTimeOffset? timestamp { get; set; }
public long? base_message_id { get; set; }
public string text { get; set; }
public long? priority { get; set; }
}
除了 parameters
,该模型有效,我可以从数据库中获取数据。当我尝试手动添加 属性 时,它仍然运行,但参数始终为空:
public string[] parameters { get; set; } // also tried List<string>
我怎样才能让它发挥作用?根据我阅读文档时的理解,我认为这应该是可能的?
我的应用程序以 .NET Framework 4.6 为目标,我正在使用 EntityFramework6.Npgsql 版本 6.4.1.0 和 Npgsql 版本 4.0.10.0。
映射数组在 EF6 中不受支持,并且可能永远不会支持 - EF6 的类型模型非常closed/restricted,并且不允许公开特定于数据库的类型(尤其是像数组这样的复杂情况) .
EF Core 提供程序确实对 PostgreSQL 数组提供了很好的支持,如果它们是您正在做的事情的核心,我建议您考虑使用 Core。