linq的decimal類型保存到數據庫只保存到小數點后兩位的問題


今天的一個decimal類型保存到數據的問題困擾了我很長時間,最后就是一個小小的設置問題解決······坑······深坑····

話不多說,直接說問題,在說答案:

問題:linq當采用EF的DbContext保存decimal類型數據到數據庫,默認只會保存小數點后的前2位小數,其余均置0;

        例如保存1.23456789,實際存到數據庫里的數據為1.23000000;

就是那么坑想想精確到小數點后面在多位也不行,就給你兩位,這個肯定滿足不了我的要就呀,linq那么強大肯定有哪里可以設置的,這不問題就是這樣解決的:

解決方法:在創建DbContext時,重寫DbContext.OnModelCreating()方法;然后通過如下方法指定精度:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //解決DbContext保存decimal類型數據到數據庫,默認只會保存小數點后的前2位小數,其余均置0的問題,這樣就會保存小數點7位了
            modelBuilder.Entity<Models_VideoDeviceInfo>().Property(p => p.LongitudeX).HasPrecision(18, 7);
            modelBuilder.Entity<Models_VideoDeviceInfo>().Property(p => p.LatitudeY).HasPrecision(18, 7);
            modelBuilder.Entity<Models_VideoResource>().Property(p => p.Latitude).HasPrecision(18, 7);
            modelBuilder.Entity<Models_VideoResource>().Property(p => p.Longitude).HasPrecision(18, 7); 
        }

就是那么簡單,害我捯飭半天,我去哭會······

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM