在實體框架中映射無符號整數和長整型
實體框架的程式碼優先方法提供屬性到資料庫列的無縫映射。然而,MySQL 的 EF 提供者不支援 ulong 資料類型,這給開發人員留下瞭如何將此類屬性對應到 MySQL 的 unsigned bigint 的問題。
解決方案:
傳統上,實體框架缺乏對無符號資料類型的支援。但是,對於 uint 列,開發人員可以將值儲存在更大範圍的有符號資料類型(例如 long)中。但對於 ulong 列,沒有 EF 支援的有符號資料類型可以防止溢位。
為了解決這個問題,開發人員可以利用一個聰明的解決方案:將資料儲存在資料庫中的 long 列中,並將其轉換為存取該屬性時ulong。這是可行的,因為 long 和 ulong 都是 8 位元組資料型態。
<code class="csharp">// As a database column only. Do not modify directly. public long __MyVariable { get; set; } // Access and modify this variable instead. [NotMapped] public ulong MyVariable { get { unchecked { return (ulong)__MyVariable; } } set { unchecked { __MyVariable = (long)value; } } }</code>
注意: 採用未經檢查的轉換來防止溢出異常。
此解決方案允許開發人員有效地將 ulong 變數與實體框架結合使用,為缺乏對無符號資料類型的本機支援提供了解決方法。
以上是如何將「ulong」屬性對應到實體框架中 MySQL 的 Unsigned Bigint?的詳細內容。更多資訊請關注PHP中文網其他相關文章!