程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> linq的decimal類型保存到數據庫只保存到小數點後兩位的問題,linqdecimal

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

編輯:C#入門知識

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


今天的一個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); 
        }

就是那麼簡單,害我捯饬半天,我去哭會······

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved