Как зарегистрировать пользовательский тип F # с Npgsql? - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно обойти ошибку в 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) (Сервер)

Но странно то, что здесь работает intellisense и завершается тип.

...