Ich brauche Hilfe bei der Zuordnung von Enums mit Dapper und Oracle.
Ich habe ein Feld in Oracle-Typ NUMMER (1) und muss in meiner Entität in eine enum werden.
public Status Status { get; set; }
Status ist ein Enum:
public enum Status
{
[Description("Inactive", "0")]
Inactive = 0,
[Description("Active", "1")]
Active = 1,
}
Wie mache ich das Mapping mit Dapper?
Enums sollte JustWork ™ für Integer- oder String-Repräsentationen verwenden. Wenn es nicht funktioniert, müssen Sie genauer auf jede Ausnahme eingehen, die es auslöst. Zum Beispiel, lautes Denken und reine Spekulation, aber: IIRC Oracle hat die Angewohnheit, große Zahlen als 64-Bit zu wollen, und ich frage mich, ob der Ebun-Mapping-Code alle Arten der numerischen Konvertierung verarbeitet. Wenn nicht, dann ist das ein Fehler.
Also: Funktioniert es?
Nur um mit den fundierten Ratschlägen in den anderen Antworten deutlich zu werden. In Ihrer Datenbank sind die Daten möglicherweise in einer Spalte mit dem Namen " StatusId
" StatusId
während die Eigenschaft StatusId
Objekts möglicherweise einfach " Status
.
Normalerweise kann ich das umgehen, indem ich in der SQL-Abfrage einen Alias verwende:
SELECT StatusId AS Status FROM Table
Dapper versteht implizit, wie ein int
Datenbankfeld einer C # -Aufzählung zugeordnet wird. Normalerweise gebe ich meine Aufzählungen explizit an, um die Dinge so klar wie möglich zu machen, z
public enum Status
{
Active = 1,
Inactive = 2
}