C# 在EntityFramework Core中,我可以先在MySQL代码中设置无符号数据类型吗? 编辑:我通过扩展ValueConverter解决了问题的第一部分。

C# 在EntityFramework Core中,我可以先在MySQL代码中设置无符号数据类型吗? 编辑:我通过扩展ValueConverter解决了问题的第一部分。,c#,mysql,entity-framework,dbcontext,C#,Mysql,Entity Framework,Dbcontext,假设我想在MySQL数据库中存储ulong,并且需要使用数字的整个宽度。虽然MySQL支持无符号bigint,但据我所知,EF Core似乎不支持任何无符号数据类型。我使用代码优先的方法来设计我的数据库 我在代码中绕过这一点的一种方法是使用以下模式,它可以工作: namespace PersistentDataAPI.Data { public class RecordModelWithULongId { [Column(Name = "Id"

假设我想在MySQL数据库中存储
ulong
,并且需要使用数字的整个宽度。虽然MySQL支持
无符号bigint
,但据我所知,EF Core似乎不支持任何无符号数据类型。我使用代码优先的方法来设计我的数据库

我在代码中绕过这一点的一种方法是使用以下模式,它可以工作:

namespace PersistentDataAPI.Data
{
    public class RecordModelWithULongId
    {
        [Column(Name = "Id")]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]

#pragma warning disable IDE1006 // Naming Styles

        public long __Id { get; set; } // A garbage Id to satisfy EF Core

#pragma warning restore IDE1006 // Naming Styles

        [NotMapped]
        // Voodoo to fix ulong -> long conversion between MySQL and EF Core
        public ulong Id
        {
            get
            {
                unchecked
                {
                    return (ulong)__Id;
                }
            }
            set
            {
                unchecked
                {
                    __Id = (long)value;
                }
            }
        }
    }
}
我目前正在尝试包装一个名为
[Snowflake]
的自定义属性,以自动将
ulong
(在代码中)转换为unsigned bigint(在数据库中)。我的一些模型将需要大量的
ulong
属性,而在代码中不断重复这些属性可能会变得极其乏味

我想将其简化为以下内容:

namespace PersistentDataAPI.Data
{
    public class RecordModelWithULongId
    {
        [Snowflake]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public ulong Id { get; set; }
    }
}
我的问题如下:

namespace PersistentDataAPI.Data
{
    public class RecordModelWithULongId
    {
        [Snowflake]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public ulong Id { get; set; }
    }
}
  • [SOLVED]是否有一种标准方法可以以某种方式将显式强制转换重构到我的
    DbContext
    中?我不关心检测属性上的属性

  • 是否有办法自动设置
    bigint(20)Id
    列,使其具有
    unsigned
    标志?现在,我的迁移没有考虑到这一点,因为EF Core似乎不尊重无符号类型,所以我不知道如何正确地做到这一点。

  • 我真的很感激任何帮助!诚然,我不太熟悉
    DbContext
    ,也不太熟悉它的覆盖

    提前非常感谢