Moh*_*yan 3 c# sql-server dapper
我TotalPrice在我们的 SQL Server 2016 数据库中有一个numeric(20, 3)数据类型的表字段()。
我使用ulongtype 作为我的 C# 属性类型。
public ulong TotalPrice { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我想在我的表中插入一条记录时,发生了以下异常。
不存在从 DbType UInt64 到已知 SqlDbType 的映射
我的 C# 代码插入记录:
const string queryInsertInvoice = @"
INSERT INTO Invoice (CustomerId, Number, TotalPrice, LatestStatusDateTime)
VALUES (@CustomerId, @Number, @TotalPrice, @LatestStatusDateTime)
SELECT SCOPE_IDENTITY();";
var invoiceId = await dbConnection.QueryFirstOrDefaultAsync<int>(queryInsertInvoice, invoice);
Run Code Online (Sandbox Code Playgroud)
我如何使用 Dapper 2.0.53 处理这种情况?
这是故意的。SQL Server 没有无符号整数,因此它试图阻止您将数据存储为与您期望的不同的数据 - 环绕对等式运算很好,但如果我们允许,不等式运算对于某些值的行为会非常意外。
换句话说:使用long,而不是ulong。
编辑:我可以在“Dapper 应该允许ulong前 63 位 - 强制它long-OverflowException如果设置 MSB并抛出和异常(?)”上出售。这只是今天没有实施。
小智 5
只需将 TotalPrice 类型更改为十进制。
public decimal TotalPrice { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |