将C#十进制转换为SQL十进制而不是金钱(始终加密)的简洁

将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

使用Dapper保存十进制数据(该数据将进入AlwaysEncryptedMoney字段)会导致以下错误:

操作数类型冲突:使用(…)加密的十进制(5,1) 与使用(…)加密的货币不兼容

你如何明确地告诉Dapper使用money作为类型,因为C#十进制money是首选映射

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);