C# 在EntityFramework Core中,我可以先在MySQL代码中设置无符号数据类型吗? 编辑:我通过扩展ValueConverter解决了问题的第一部分。
假设我想在MySQL数据库中存储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"
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; }
}
}
DbContext
中?我不关心检测属性上的属性
bigint(20)Id
列,使其具有unsigned
标志?现在,我的迁移没有考虑到这一点,因为EF Core似乎不尊重无符号类型,所以我不知道如何正确地做到这一点。
DbContext
,也不太熟悉它的覆盖
提前非常感谢