-2

Update-Database在 EF Core 中运行时出现此错误:

将数字转换为数字数据类型的算术溢出错误。
该语句已终止。

此 SQL 段也被突出显示。

执行 DbCommand (10ms) 失败 [Parameters=[], CommandType='Text', CommandTimeout='30']

IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DiverId', N'CreatedAt', N'DriverId', N'EmployeeNumber', N'Name', N'SiteId', N 'UpdatedAt') AND [object_id] = OBJECT_ID(N'[Drivers]'))
SET IDENTITY_INSERT [Drivers] ON;
插入 [Drivers] ([DiverId], [CreatedAt], [DriverId], [EmployeeNumber], [Name], [SiteId], [UpdatedAt])
值 (1, '2020-04-30T10:41:02.0000000', -9193900000000000000.0,119642,N'WDE274YE TOCHUKWU',-914179000000000000000000000.0,'2020-06-01T03:01:01:34.0000000'
) ABUBAKAR',-9141790000000000000.0,'2020-06-01T03:01:34.0000000');

IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DiverId', N'CreatedAt', N'DriverId', N'EmployeeNumber', N'Name', N'SiteId', N 'UpdatedAt') AND [object_id] = OBJECT_ID(N'[Drivers]'))
SET IDENTITY_INSERT [Drivers] OFF;

这是模型类Driver

public class Driver 
{
        public int Id { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        [Column(TypeName = "decimal(18,10)")]
        public decimal SiteId { get; set; }
        [Column(TypeName = "decimal(18,10)")]
        public decimal DriverId { get; set; }
        public string Name { get; set; }
        public int EmployeeNumber { get; set; }
}
4

1 回答 1

0

看起来您正在用一些数据为您的数据库播种。可能出现的问题:

  • DriverId 和 SiteId 可能指定了不正确的数据类型。您已将其设置为小数(18,10)。这意味着您在小数点左侧只有 8 位可用。对于 Id 字段,十进制通常看起来很奇怪。通常是 int 或 bigint。
  • 您的种子数据可能不正确。例如,您尝试插入 -9193900000000000000.0 作为 DriverId。它不适合十进制(18,10)。这是最大的小数 (18,10) 数:99999999.9999999999(总共 18 位,但为小数点后的部分保留 10 位)。
于 2020-10-25T08:54:34.073 回答