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中文網其他相關文章!