将复合类型从 postgresql 映射到 ef core

Twe*_*nty 3 c# postgresql npgsql composite-types entity-framework-core

我在 postgre 数据库中定义了以下复合类型:

CREATE TYPE foobar AS
(
   foo NUMERIC,
   bar NUMERIC
);
Run Code Online (Sandbox Code Playgroud)

我创建了一个具有相同属性的结构:

public struct FooBar
{
   public decimal Foo { get; set; }
   public decimal Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在实体中使用 FooBar :

public class FooyaEntity
{
   public Guid Id { get; set; }
   public string Name { get; set; }
   public FooBar FooBar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将如何配置 ef core 来正确映射这些?目前,当尝试添加某些内容时,会产生以下错误:

System.InvalidOperationException:无法映射属性“Test.FooBar”,因为它的类型为“FooBar”,不是受支持的基元类型或有效的实体类型。显式映射此属性,或者使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略它。

npgsql 的文档还显示了没有 ef core 的工作示例。

Sha*_*sky 6

尚不支持映射到 PostgreSQL 复合类型,此问题已对此进行跟踪。大家有兴趣的话,就点个赞吧!