C# Npgsql和EntityFramework7中的枚举处理

C# Npgsql和EntityFramework7中的枚举处理,c#,enums,npgsql,entity-framework-core,C#,Enums,Npgsql,Entity Framework Core,我有postgres数据库,里面有一些数据 我正在使用Npgsql.EntityFramework7适配器(版本3.1.0-beta8-2)来处理它 问题是当我试图从上下文中获取实体时,其中包含一些枚举 在postgres中,我声明枚举: CREATE TYPE public.my_enum AS ENUM ('value1','value2','value3'); 我的模型看起来像: [Table("my_table")] public class Entity { [C

我有postgres数据库,里面有一些数据

我正在使用Npgsql.EntityFramework7适配器(版本3.1.0-beta8-2)来处理它

问题是当我试图从上下文中获取实体时,其中包含一些枚举

在postgres中,我声明枚举:

CREATE TYPE public.my_enum AS
 ENUM ('value1','value2','value3');
我的模型看起来像:

[Table("my_table")]
public class Entity
{ 
        [Column("id")]
        [Key]
        public int Id { get; set; }
        [Column("type")]
        public MyEnum Type { get; set; }
}
枚举:

不幸的是,当我试图通过实体框架从数据库中获取某些内容时,我会收到以下错误:

System.InvalidCastException:无法强制转换数据库类型 我的枚举到Int32

我已经尝试在Npgsql中注册我的枚举(如中所述)。没有效果


我能做些什么来处理这个堆栈中的“正确”枚举吗?(将数据库中的枚举字段作为字符串/枚举而不是int)

这似乎是npgsql提供程序中的一个错误。通过在他们的GitHub存储库中归档问题,您可能会更幸运地获得解决方案。虽然Npgsql在ADO.NET级别支持enigma,但Npgsql EF7提供程序还不支持它们。您可以在github.com/npgsql/npgsql上打开一个问题来跟踪这个问题吗?完成-。感谢您的快速回复。这似乎是npgsql提供程序中的一个错误。通过在他们的GitHub存储库中归档问题,您可能会更幸运地获得解决方案。虽然Npgsql在ADO.NET级别支持enigma,但Npgsql EF7提供程序还不支持它们。您可以在github.com/npgsql/npgsql上打开一个问题来跟踪这个问题吗?完成-。谢谢你的快速回复。
public enum MyEnum
{
    value1,
    value2,
    value3
}