首頁 >資料庫 >mysql教程 >如何使用實體框架將「ulong」屬性對應到 MySQL 中的無符號 BigInt?

如何使用實體框架將「ulong」屬性對應到 MySQL 中的無符號 BigInt?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 04:09:021055瀏覽

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

Entity Framework中的「uint」和「ulong」類型

在Entity Framework中,使用long資料類型的類別屬性可以在新增遷移(code-first)時正確映射,但mysql的EF提供者會跳過ulong資料類型。如何將屬性對應到mysql的無符號bigint呢?

更新(2021年2月)

顯然,EF Core現在支援ulong——請參考下面@JimbobTheSailor的回答。

較舊的Entity Framework版本:

事實證明,Entity Framework不支援無符號資料型別。對於uint列,可以將值儲存在範圍更大的有符號資料類型(即long)中。對於ulong列呢?通用的解決方案對我來說行不通,因為它沒有得到EF支援且容量足夠大的有符號資料類型,可在不溢出的情況下容納ulong。

思考片刻後,我為這個問題找到一個簡單的解決方案:只需將資料儲存在受支援的long類型中,並在存取時將其轉換為ulong。你可能會想:「等等,ulong的最大值> 長的最大值!」你仍然可以將ulong的位元組儲存在一個long中,然後在需要時將其重新轉換為ulong,因為兩者都有8個位元組。這將允許你透過EF將ulong變數儲存到資料庫中。

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

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

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}</code>

如果不檢查轉換,將防止溢位異常。

希望這能幫到大家。

以上是如何使用實體框架將「ulong」屬性對應到 MySQL 中的無符號 BigInt?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn