今天的一個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); }
就是那麼簡單,害我捯饬半天,我去哭會······