在实体框架中映射无符号整数和长整型
实体框架的代码优先方法提供属性到数据库列的无缝映射。然而,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中文网其他相关文章!