Aufgrund meiner Fehlermeldung:Enum und Flaggen unterstützen in ormlite servicestack
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code
Additional information: Conversion failed when converting the nvarchar value 'AB' to data type int.
Ich habe eine Enum mit einem Wert AB und ich möchte es als ganze Zahl nicht nvarchar Wert speichern. Ich habe eine Enumeration mit Fahnen Attribut so etwas wie: [Flags]
public enum VisibleDayOfWeek : int
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
Ich kann nicht mehr Tage Zeichenfolge in der db speichern, aber ich kann die Summe der Flags Werte speichern, die mehrere Tage darstellen.
Ich möchte keinen Integer-Wrapper um diese Enumerationseigenschaften erstellen.
Der zugrunde liegende Typ einer Enumeration ist ein Byte oder eine ganze Zahl, also warum zum Teufel ist es als String/Varchar gespeichert? Das macht keinen Sinn. Sogar das Entity-Framework hat es mit seiner Enum-Unterstützung nach Jahren richtig gemacht ...
Was ist die Lösung in diesem Fall?
Scheint dieser Kerl hat das gleiche Problem: https://github.com/tapmantwo/enumflags
Wie schon gesagt in meiner Frage möchte ich keine Integer-Wrapper. Und in vielen Teilen ist mlite reichhaltiger als EF. EF hat keine partielle Aktualisierung oder Ausdruck basierte API für Update, Löschen und vieles mehr. Und Ormlite v4 ist eine Weile draußen. – HelloWorld
Es liegt daran, dass Sie nur das Feature von ormlite verwenden, das ef nicht hat, wenn Sie davon ausgehen, dass ormlite nicht viel mehr hat. Es gibt keine andere Lösung als Integer-Wrapper oder vielleicht fork ormlite, und es unterstützt Enum. – kirie
Das Flags wurde bereits als Fehler gemeldet. Jetzt warte ich, dass der Autor auch bestätigen wird, dass enum-Wert zu string und nicht zu int als ein Fehler angesehen wird. https://github.com/ServiceStack/ServiceStack.Ormlite/commit/6c4c608443e919aac23b647f97fed1c86d89c52d – HelloWorld