2014-10-10 16 views

Antwort

39

Stellt sich heraus, dass Entity Framework unsigned Datentypen nicht unterstützt. Für uint Spalten könnte man einfach den Wert in einem signierten Datentyp mit einem größeren Bereich speichern (also long). Was ist mit ulong Spalten? Die allgemeine Lösung konnte für mich nicht funktionieren, da es keinen EF-unterstützten signierten Datentyp gibt, der eine ulong ohne Überlauf enthalten kann.

Nach ein wenig Nachdenken, habe ich eine einfache Lösung für dieses Problem gefunden: Speichern Sie einfach die Daten in den unterstützten long Typ und werfen Sie es auf ulong, wenn zugegriffen wird. Du denkst vielleicht: "Aber warte, Ulongs Maximalwert> lang ist der Maximalwert!" Sie können die Bytes eines ulongs immer noch lange speichern und dann nach ulong zurückschreiben, wenn Sie sie brauchen, da beide 8 Bytes haben. Auf diese Weise können Sie eine ulong-Variable über EF in einer Datenbank speichern.

Das Casting ist unchecked, um Überlauf-Ausnahmen zu verhindern.

Ich hoffe, das hilft jemandem.

+0

Können Sie bitte einen Blick auf http://stackoverflow.com/questions/41802581/entity-framework-code-first-with-mysqlconnector-pks-and-fks-set-as-uint werfen? – NetUser101

+0

Was ist, wenn Sie versuchen, mit Zahlen zu arbeiten, die größer als eine Länge sind? –

Verwandte Themen