将C#十进制转换为SQL十进制而不是金钱(始终加密)的简洁
使用Dapper保存十进制数据(该数据将进入AlwaysEncryptedMoney字段)会导致以下错误: 操作数类型冲突:使用(…)加密的十进制(5,1) 与使用(…)加密的货币不兼容 你如何明确地告诉Dapper使用money作为类型,因为C#十进制money是首选映射将C#十进制转换为SQL十进制而不是金钱(始终加密)的简洁,c#,dapper,always-encrypted,C#,Dapper,Always Encrypted,使用Dapper保存十进制数据(该数据将进入AlwaysEncryptedMoney字段)会导致以下错误: 操作数类型冲突:使用(…)加密的十进制(5,1) 与使用(…)加密的货币不兼容 你如何明确地告诉Dapper使用money作为类型,因为C#十进制money是首选映射 decimal income = 4500m; using (var connection = new ReliableSqlConnection(connectionString)) { try { conne
decimal income = 4500m;
using (var connection = new ReliableSqlConnection(connectionString)) {
try {
connection.Open();
connection.Query<int>(
@"INSERT INTO [tablename]
([MonthlyAfterTaxIncome])
VALUES
(@MonthlyAfterTaxIncome);
SELECT CAST(SCOPE_IDENTITY() as int)",
new {
MonthlyAfterTaxIncome = income
})
.FirstOrDefault();
} finally {
connection.Close();
}
}
已替换decimal到DbType.decimal的默认映射,删除了问题的根源
[MonthlyAfterTaxIncome] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [KeyName], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,)
SqlMapper.AddTypeMap(typeof(decimal), DbType.Currency);