MySQL, Connector, добавляющий enum со значением на единицу меньше, чем фактическое

м, используяMySQL Connector для .NET для управления базой данных MySQL из C #.

Когда я пытаюсь вставить enum в базу данных, он добавляет enum со значениемна один меньше, чем фактический один.

public enum MyEnum {
    FirstValue, SecondValue, ThirdValue;
}

public void InsertEnum() {
    MySqlConnection con = new MySqlConnection(connStr);
    string sql = "INSERT INTO table (Col1) VALUES (@enumVal);";
    MySqlCommand cmd = new MySqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@enumVal", MyEnum.SecondValue);
        //Note I'm trying to insert 'SecondValue' --^

    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}

Это вставкиFirstValue в базе данных.

Col1 столбец в базе данных имеет тип данных ENUM:

ENUM('FirstValue','SecondValue','ThirdValue')

Если я попытаюсь добавитьMyEnum.FirstValue Я получаю ошибку усечения данных (data truncated for column COLUMN_NAME), поскольку он пытается использовать тот же индекс, что и .NET (0 в случаеMyEnum.FirstValue), который является зарезервированным значением вMySQL Enums (так как они начинаются на1 по умолчанию).

Решение состоит в том, чтобы добавить+1 для всех значений перечисления или, возможно, сделать расширение:

cmd.Parameters.AddWithValue("@enumVal", MyEnum.SecondValue + 1);

Мне все еще кажется неправильным, что я должен изменить значение вручную, чтобы библиотека преобразовывала его автоматически.

Я делаю что-то не так, или по умолчанию нет способа справиться с этим?

Ответы на вопрос(2)

Ваш ответ на вопрос