2016-03-17 5 views
0

При попытке сохранить перечисление с помощью Npgsql V3.05 появляется следующее сообщение об ошибке.Ошибка Npgsql Enum

Перечисления должны быть зарегистрированы с помощью Npgsql Connection.RegisterEnumType или RegisterEnumTypeGlobally

Я создал тип в PostgreSQL в PostgrSQL, и проверить его с помощью следующего запроса:

select enum_range(null::schedule_link_type); 

который возвращает

"{finish_to_start,finish_to_finish,start_to_start,start_to_finish}" 

Я создал enu м в моей программе VB.NET, как (обратите внимание, что это в моем ActionRecord классе):

Public Enum ScheduleLinkType 
    <EnumLabel("finish_to_start")> 
    FinishToStart 
    <EnumLabel("finish_to_finish")> 
    FinishToFinish 
    <EnumLabel("start_to_finish")> 
    StartToFinish 
    <EnumLabel("start_to_start")> 
    StartToStart 
End Enum 

Я называю следующий метод перед выполнением запроса вставки (обратите внимание, что я поставил точку останова andconfirmed это действительно быть вызвано прежде команда вставки выполнена):

NpgsqlConnection.RegisterEnumGlobally(Of ActionRecord.ScheduleLinkType)("schedule_link_type") 

параметр для поля, которое я пытаюсь вставить это (из окна отладчика часов Visual Studio):

command.Parameters(1) {Npgsql.NpgsqlParameter} Npgsql.NpgsqlParameter 
    Collection {Npgsql.NpgsqlParameterCollection} Npgsql.NpgsqlParameterCollection 
    DbType Object {13} System.Data.DbType 
    Direction Input {1} System.Data.ParameterDirection 
    EnumType {Name = "ScheduleLinkType" FullName = "VSData.ActionRecord+ScheduleLinkType"} System.Type {System.RuntimeType} 
    IsNullable False Boolean 
    NpgsqlDbType Enum {47} NpgsqlTypes.NpgsqlDbType 
    NpgsqlValue FinishToFinish {1} Object {VSData.ActionRecord.ScheduleLinkType} 
    ParameterName "link_type" String 
    Precision (System.Data.Common.DbParameter) 0 Byte 
    Precision 0 Byte 
    Scale (System.Data.Common.DbParameter) 0 Byte 
    Scale 0 Byte 
    Size 0 Integer 
    SourceColumn "" String 
    SourceColumnNullMapping False Boolean 
    SourceVersion Current {512} System.Data.DataRowVersion 
    Value FinishToFinish {1} Object {VSData.ActionRecord.ScheduleLinkType} 

Кто-нибудь знает, почему это не работает?

+0

Кажется, что если я зарегистрирую Enum через Connection.RegisterEnumType, он работает, но если я зарегистрирую Enum через NpgsqlConnection.RegisterEnumTypeGlobally, это не сработает. – Casey

ответ

0

Этот вопрос по какой-то причине ушел, и все работает как ожидается (обратите внимание, что я обновил NPGSQL до 3.1.8 после публикации исходного вопроса, но я не заметил, что эта проблема ушла из-за обновления или что-то еще, что я изменил).

 Смежные вопросы

  • Нет связанных вопросов^_^