MySQL Connector fügt die Enumeration mit dem Wert eins weniger als dem tatsächlichen Wert hinzu

Ich benutze dieMySQL Connector für .NET zum Verwalten einer MySQL-Datenbank über C #.

Wenn ich versuche, eine Aufzählung in die Datenbank einzufügen, hängt sie die Aufzählung mit dem Wert aneine weniger als die tatsächliche ein.

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();
}

Dies fügt einFirstValue in der Datenbank.

DasCol1 Die Spalte in der Datenbank hat den Datentyp ENUM:

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

Wenn ich versuche anzuhängenMyEnum.FirstValue Ich erhalte einen Fehler beim Abschneiden der Daten (data truncated for column COLUMN_NAME), da es versucht, den gleichen Index wie .NET zu verwenden (0 Im Falle vonMyEnum.FirstValue), das ist ein reservierter Wert inMySQL Enums (seit sie anfangen am1 standardmäßig).

Eine Lösung ist das Anhängen+1 auf alle Aufzählungswerte oder eventuell eine Erweiterung machen:

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

Es fühlt sich für mich immer noch falsch an, dass ich den Wert manuell in eine Bibliothek ändern muss, die ihn automatisch konvertieren soll.

Mache ich etwas falsch oder gibt es keine Standardmethode, um damit umzugehen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage