decimal類型有GetBits()方法
可以獲取到值的int[4]值,進而獲取到byte[16]值
在c#裡,0m和0.00m獲取到的byte[]是不一樣的(具體為何不一樣,自己百度)
在sql裡,EF生成的decimal的列,默認強制2位小數
c#裡賦值0m,存到數據庫變成0.00m
那麼問題來了
如果有用到decimal.GetBits()的值作為要簽名的內容
那麼存到數據庫後再取出來,驗證簽名就會失敗
為了應對這種問題,需要在存進數據庫前,強制把decimal轉為2位小數
在賦值語句裡連著“+0.01m-0.01m”,例如item.Credit = value + 0.01m - 0.01m;
這樣就能解決這個問題了……