Windows Forms: Entity Framework Datenbindung, Enums und ComboBoxen

Wer den Support von Enums im Entity Framework auch vermisst, oder aber einfach nur in der Datenbank mit Integerwerten arbeiten möchte oder vielleicht sogar muss, weil das Datenbankdesign nicht geändert werden kann, der hat zwei Möglichkeiten für eine funktionierende Datenbindung:

Entweder werden die Entitäten in den partiellen Klassen um die Enum Eigenschaften erweitert. Dieser Ansatz bringt allerdings auch einige Fallstricke mit sich. Eine gute Umsetzung und genauere Erläuterungen findet ihr bei Davy Landman.

Eine andere Möglichkeit ist die Verwendung des „Parse“ und des „Format“ Events der Datenbindung. Da ich einige ComboBoxen habe und die Events nicht jedesmal komplett neu registrieren möchte, hab ich mir ne kleine Helperklasse geschrieben:

public static class EnumHelper
{
    public static void BindToComboBox(ComboBox comboBox, string propertyName)
    {
        if (typeof(E).IsEnum)
        {
            comboBox.DataBindings[propertyName].Format += (sender, e) => { e.Value = (E)e.Value; };
            comboBox.DataBindings[propertyName].Parse += (sender, e) => { e.Value = (int)e.Value; };

            comboBox.DataSource = Enum.GetValues(typeof(E));
        }
    }
}

About this entry