У меня есть таблица в PG с полем, которое нужно хранить от 1 до 5. На стороне F # у меня есть это перечисление:
type PriceTier =
| P1
| P2
| P3
| P4
| P5
Я использую напрямую npgsql, без провайдеров типов или ORM. Когда я отправляю команду с параметрами:
let build (row:CustomerRecord) =
[P("@code", row.code);.... P("@defaultPrice", row.defaultPrice);....]
Я получаю сообщение об ошибке:
Тип CLR Models+PriceTier не поддерживается Npgsql или вашим PostgreSQL. Если вы хотите сопоставить его с составным типом PostgreSQL, вам необходимо зарегистрировать его перед использованием, см. документацию.
Итак, я прочитал http://www.npgsql.org/doc/types/enums_and_composites.html и выполните:
NpgsqlConnection.MapEnumGlobally<PriceTier>();
Но это не работает, потому что тип не является истинным перечислением, а типом F#.
Итак, у меня есть 2 вопроса здесь:
- Можно ли использовать тип F# как есть без преобразования в перечисление?
- Можно ли сопоставить PriceTier -> Int без преобразования вручную?