如何在Npgsql中注册自定义F#类型?

时间:2019-03-04 23:05:07

标签: f# npgsql

我需要解决bug of F#,并且需要一种使用自定义类型(小数的简单包装)的方法,但是看不到如何做:

open System.Data
open Npgsql
open Npgsql.TypeMapping
open NpgsqlTypes
open Npgsql.TypeHandlers.NumericHandlers

type money(value:decimal) =
    member this.value = value
    override this.ToString() = this.value.ToString()

let openConn(company:Option<string>) =
    let map = new NpgsqlTypeMappingBuilder(PgTypeName = "decimal",
                        NpgsqlDbType = System.Nullable<NpgsqlDbType.Numeric>,
                        DbTypes =  [| DbType.Decimal |],
                        ClrTypes = [| typeof<money> |],
                        InferredDbType = System.Nullable<DbType.Decimal> )

    NpgsqlConnection.GlobalTypeMapper.AddMapping(map.Build()) |> ignore        

    let conStr = localConnectionString()
    let conn = new NpgsqlConnection(conStr)
    conn.Open()

    conn

我被击中了

  

DataEngine.fs(73,73):错误FS0039:未定义类型“数字”。   (FS0039)(服务器)DataEngine.fs(69,69):错误FS0039:类型   未定义“十进制”。 (FS0039)(服务器)

但是奇怪的是,这里有智能感知工作,并完成了输入。

0 个答案:

没有答案