Entity Framework – Typen und Ausnahmen

Beim Arbeiten mit dem Entity Framework (EF) bekam ich gestern ständig folgende Ausnahme:

System.Collections.Generic.KeyNotFoundException:
Der angegebene Schlüssel war nicht im Wörterbuch angegeben.

Während der StackTrace von einer „MemberDomainMap“ sprach, bezog ich den Fehler anfangs immer auf einen von mir selbst vergebenen Primärschlüsselwert. Letztlich stellte sich aber heraus, dass eine andere Datenklasse eine Eigenschaft hatte, die nicht vom EF automatisch umgesetzt werden kann – besser gesagt: der Typ dieser Eigenschaft (System.Version) verfügte über kein Standard-Mapping (SQL-CLR Type Mapping).

Auch der Versuch dies mit [Column(TypeName = "ntext")] anders abzubilden und sich dabei auf Parse() und ToString() zu verlassen wie die Dokumentation es vorschlägt schlug fehl. So blieb letztlich nur die „banale“ Lösung, dies zu Fuß zu erledigen:

    [NotMapped]
    public Version Version { get; set; }

    public Version VersionString
    {
        get { return Version.ToString(); }
        set { Version = Version.Parse(value ?? "0.0"); }
    }