MySQL Connector acrescentando o enum com o valor um menor que o real
Estou usando oMySQL Connector para .NET para gerenciar um banco de dados MySQL de C #.
Quando tento inserir um enum no banco de dados, ele anexa o enum com o valorum a menos que o real 1.
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();
}
Isto insereFirstValue
no banco de dados.
oCol1
column, no banco de dados, é do tipo de dados ENUM:
ENUM('FirstValue','SecondValue','ThirdValue')
Se eu tentar acrescentarMyEnum.FirstValue
Eu recebo um erro de truncamento de dados (data truncated for column COLUMN_NAME
) uma vez que tenta usar o mesmo índice que o .NET (0
no caso deMyEnum.FirstValue
), que é um valor reservado emMySQL Enums (desde que eles começam em1
por padrão).
Uma solução é anexar+1
para todos os valores enum ou possivelmente fazer uma extensão:
cmd.Parameters.AddWithValue("@enumVal", MyEnum.SecondValue + 1);
Ainda me parece errado que eu tenha que modificar o valor manualmente, para uma biblioteca que deve convertê-lo automaticamente.
Estou fazendo algo errado ou não há uma maneira padrão de lidar com isso?