Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie ordne ich „ulong'-Eigenschaften unsignierten BigInts in MySQL mit Entity Framework zu?

Mary-Kate Olsen
Freigeben: 2024-11-03 04:09:02
Original
1022 Leute haben es durchsucht

How to Map `ulong` Properties to Unsigned BigInts in MySQL with Entity Framework?

Die Typen „uint“ und „ulong“ in Entity Framework

In Entity Framework können Klassenattribute, die lange Datentypen verwenden, zugeordnet werden ist korrekt, wenn eine neue Migration hinzugefügt wird (Code-First), aber der EF-Anbieter für MySQL überspringt den ulong-Datentyp. Wie ordne ich eine Eigenschaft dem vorzeichenlosen Bigint von MySQL zu?

Aktualisiert (Februar 2021)

Anscheinend unterstützt EF Core jetzt Ulongs – siehe Antwort von @JimbobTheSailor unten.

Ältere Entity Framework-Versionen:

Es stellt sich heraus, dass Entity Framework keine vorzeichenlosen Datentypen unterstützt. Für uint-Spalten kann der Wert in einem größeren vorzeichenbehafteten Datentyp (d. h. long) gespeichert werden. Was ist mit Ulong-Säulen? Die generische Lösung funktioniert bei mir nicht, da sie keinen von EF unterstützten signierten Datentyp hat, der groß genug ist, um einen Ulong ohne Überlauf aufzunehmen.

Nachdem ich eine Weile nachgedacht hatte, fand ich eine einfache Lösung für dieses Problem: Speichern Sie die Daten einfach in einem unterstützten Long-Typ und konvertieren Sie sie beim Zugriff in einen Ulong-Typ. Sie denken vielleicht: „Moment, der Maximalwert eines Ulong > der Maximalwert eines Long!“ Sie können die Bytes des Ulong immer noch in einem Long speichern und ihn dann bei Bedarf wieder in einen Ulong umwandeln, denn beide sind 8 Bytes. Dadurch können Sie Ulong-Variablen über EF in der Datenbank speichern.

<code class="csharp">// 避免直接修改以下内容。
// 仅用作数据库列。
public long __MyVariable { get; set; }

// 访问/修改此变量。
// 告诉 EF 不要将此字段映射到数据库表
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}</code>
Nach dem Login kopieren

Verhindert Überlaufausnahmen, wenn die Konvertierung nicht überprüft wird.

Ich hoffe, das hilft.

Das obige ist der detaillierte Inhalt vonWie ordne ich „ulong'-Eigenschaften unsignierten BigInts in MySQL mit Entity Framework zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage