当前位置: 首页 > 面试题库 >

如何在Entity Framework中使用unsigned int / long类型?

文嘉禧
2023-03-14
问题内容

long添加新的迁移时(代码优先),具有数据类型的类属性会正确映射,但是ulongmysql的EF提供程序会跳过数据类型。一个如何映射属性以使用mysql的unsigned bigint


问题答案:

事实证明,实体框架不支持unsigned数据类型。对于uint列,可以只将值存储在更大范围内的带符号数据类型中(即a
long)。那ulong列呢?通用解决方案不适用于我,因为没有EF支持的带符号数据类型可以容纳且ulong不会溢出。

经过一番思考,我找到了解决此问题的简单方法:只需将数据存储为受支持的long类型,并ulong在访问时将其强制转换为即可。您可能会想:“但是,等等,ulong的最大值>
long的最大值!”
您仍然可以长时间存储ulong的字节,然后在需要时将其转换回ulong,因为它们都有8个字节。这将允许您通过EF将ulong变量保存到数据库

// Avoid modifying the following directly.
// Used as a database column only.
public long __MyVariable { get; set; }

// Access/modify this variable instead.
// Tell EF not to map this field to a Db table
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}

强制转换是unchecked为了防止溢出异常。

希望这对某人有帮助。



 类似资料:
  • 我的代码有一个非常奇怪的问题。当我运行它时,会出现异常: 线程“main”java中出现异常。lang.IllegalArgumentException:无法设置java。朗·朗菲尔德第12课。TestReflectionRepository。Main$TestSetLong。朗菲尔德至爪哇岛23132号(朗)。base/jdk。内部的反映不安全的附件。通过java上的SetillegalArgu

  • 问题内容: 以下是我的界面- 这是我对接口的实现- 现在我有一个工厂,它得到这样的实例- 现在,我需要调用接受参数的my方法,下面是相同的类。本课不是我写的,所以这是我对此有疑问的原因,我非常确定这是错误的做法。 因此,当客户调用的方法时,他们将像这样创建参数,然后使用工厂获取的实例,然后相应地调用read方法。 问题陈述:- 所以我的第一个问题是确实的,,应该是对象或者只是在上课吗? 第二个问题

  • 我有一个很大的问题,我不知道我是否错过了一些明显的东西或什么,但我不能发现我的错误。我有类SPN、A和B。我重载了2次operator=。我想将A类型或B类型作为参数传递。 它不会抛出任何错误。但是如果我在类B或A中尝试make operator(),则使用参数SPN,如下所示: 它会抛出SPN未命名类型的错误。我甚至不能在A类或B类中创建类SPN对象。也许它不是如何客观编程工作,所以我想得到它,

  • EntityFramework 是微软公司为 .NET 开发人员推出的一个 ORM 框架,来实现对数据库单表数据的创建、读取、更新和删除操作,也就是所谓的CRUD(C:Create/R:Read/U:Update/D:Delete)。需要说明的是,如果在VS2008中使用EntityFramework就需要安装VS2008SP1。

  • 问题内容: 我正在编写此Java程序,以使用Eratosthenes的Sieve查找到num为止的所有素数,但是当我尝试编译时,它说我不能将long var用作数组索引,并且期望int var in它的位置。但是我将使用大量数据,因此不能使用int。我能做什么? 问题答案: 我不确定为什么您的代码会首先开始编译。 您不应该在数组列表中使用[]访问成员。arraylist只是内部存储在数组中的列表。

  • 这是一个至少为64 bit的整数类型(译注:实际宽度依赖于具体的实现平台),例如: long long x = 9223372036854775807LL; 不过,不要想当然地认为存在long long long或者将long拼写为short long long。 (译注:如同J. Stephen Adamczyk在参考文献中所言,”long long”是一个晦涩的拼写64-bit整数类型的方式