在實體框架中,如果您將數據庫中小數列的精度設置爲10,2並在EDMX中更新它,它將自動將任何小數截斷爲2位小數,正確?如何更改EF十進制截斷行爲
我寧願它在我的臉上炸開一個例外,如果我給它一個小數位的數字比它默默截斷它,因爲這意味着我沒有正確驗證我的數據。
有沒有可以設置的設置?或者我將不得不附加到savingchanges方法並做一些反思?
爲了用一個例子闡明:
如果我有一個名爲發票與一列名爲金額表。在我的數據庫中,這是一個十進制(10,2)列,這反映在EDMX中,我的實體說它具有10的精度和2的刻度。
然後在我的代碼中,讓我們說用戶創建一張發票,他們輸入10.23456作爲金額,我忘記爲此添加某種客戶端驗證,因此金額被髮送到服務器,然後我的控制器保存了一個金額爲10.23456的發票。實體框架將截斷到10.23並完成它。
我想要的是這樣的: 如果我試着用10.23456作爲金額保存發票,那麼EF會看到我得到了比我的實體允許的更精確的值,並引發異常。所以這種方式我沒有正確驗證輸入是馬上發現的。
你能澄清用一個例子的問題? – daryal
不用擔心,看到我的更新後文章 – RodH257