C# 如何映射类型为“的列”;int unsigned";至;“长”;使用实体框架2.2.2和MySql连接器

C# 如何映射类型为“的列”;int unsigned";至;“长”;使用实体框架2.2.2和MySql连接器,c#,mysql,entity-framework-core,C#,Mysql,Entity Framework Core,我在MySql数据库中有一个表,其中一列的类型为int unsigned,表示Unix时间戳。我正在使用EntityFrameworkCore 2.2.2和官方MySql连接器MySql.Data.EntityFrameworkCore,NuGet版本8.0.15 在我们的实体模型中,我们试图用类型为long?的属性EndTariffPlan来表示此字段,并在OnModelCreating方法中使用此逻辑: modelBuilder.Entity<User>(entity =>

我在MySql数据库中有一个表,其中一列的类型为
int unsigned
,表示Unix时间戳。我正在使用EntityFrameworkCore 2.2.2和官方MySql连接器
MySql.Data.EntityFrameworkCore
,NuGet版本8.0.15

在我们的实体模型中,我们试图用类型为
long?
的属性
EndTariffPlan
来表示此字段,并在
OnModelCreating
方法中使用此逻辑:

modelBuilder.Entity<User>(entity =>
{
    entity.Property(e => e.EndTariffPlan)
        .HasColumnName("endTariffPlan")
        .HasColumnType("int(11) unsigned");
}
我还尝试为此属性添加
CastingConverter

var intToLongConverter = new CastingConverter<long, int>();
entity.Property(e => e.EndTariffPlan)
    .HasColumnName("endTariffPlan")
    .HasColumnType("int(11) unsigned")
    .HasConversion(intToLongConverter);
var intToLongConverter=new CastingConverter();
entity.Property(e=>e.EndTariffPlan)
.HasColumnName(“endTariffPlan”)
.HasColumnType(“int(11)无符号”)
.HasConversion(intToLongConverter);
但结果完全一样

同样的代码适用于Entity Framework Core 2.0和MySql.Data.EntityFrameworkCore8.0.12


如何使用新版本的Entity Framework Core和MySql.Data.EntityFrameworkCore执行此类映射?也许有一种解决方法?

如果它表示Unix时间戳,您是否愿意将其映射到
DateTime
?@JoelCoehoorn,使用
DateTime
DateTimeOffset
属性异常类型为
invalidoOperationException:属性User.EndTariffPlan的类型为DateTime,当前数据库提供程序不支持该类型。更改属性CLR type或使用[NotMapped]属性或使用EntityTypeBuilder忽略该属性。在模型创建时忽略
我还尝试添加从long到DateTimeOffset的值转换,但它会导致相同的
System.OverflowException:对于Int32
异常,值太大或太小。如果它表示Unix时间戳,您是否愿意将其映射到
DateTime
?@JoelCoehoorn,使用
DateTime
DateTimeOffset
属性异常类型为
invalidoOperationException:属性User.EndTariffPlan的类型为DateTime,当前数据库提供程序不支持该类型。更改属性CLR type或使用[NotMapped]属性或使用EntityTypeBuilder忽略该属性。在模型创建时忽略
我还尝试添加从long到DateTimeOffset的值转换,但它会导致相同的
System.OverflowException:对于Int32
异常,值太大或太小。
var intToLongConverter = new CastingConverter<long, int>();
entity.Property(e => e.EndTariffPlan)
    .HasColumnName("endTariffPlan")
    .HasColumnType("int(11) unsigned")
    .HasConversion(intToLongConverter);