无法将 F# 区分联合映射到 Npgsql 枚举

Cannot map an F# discriminated union to an Npgsql enum

我正在尝试将 F# 区分联合映射到 Npgsql 理解的枚举。我用这个 documentation 作为参考。

下面是代码示例:

open Npgsql
open NpgsqlTypes

type Colors =
    | Red
    | Green
    | Blue

NpgsqlConnection.GlobalTypeMapper.MapEnum<Colors>("colors") |> ignore

不幸的是,我得到以下编译错误:

A generic construct requires that the type 'Colors' have a public default constructor

有什么方法可以为这个可区分的联合添加默认构造函数吗?

我没有使用过 Ngpsql,所以我不知道这是否是问题所在,但是您的 Colors 联合并不是您所写的枚举。要在 F# 中定义枚举,您必须 assign an integer to each value,如下所示:

type Color =
   | Red = 0
   | Green = 1
   | Blue = 2