Decimal値をSQLServerに保存すると小数2桁までしか保存されない


  * EntityFramework Version=6.0.0.0
  * .Net Framework targetFramework="4.6.1"
  * SQL Server Express 13.0.4001.0

SQL Server上のテーブルに、Decimal(12, 3)、Decimal(18,
3)で作成したカラムがあり、Linqを使ってそのカラムの更新を行っています。

[code]

    decimal? d12 = 123.456m;
    decimal? d18 = 222.222m;
    Record rec = DbContext.Table.Where(a => a.id == 1).First();
    rec.dec12_3col = d12;
    rec.dec18_3col = d18;
    DbContext.SaveChanges();
    
[/code]

そして更新後にSQL Server Management Studioでデータを確認すると、dec12_3colには 123.450、
dec18_3colには 222.220 が入っており、小数3桁めが切り捨てられてしまっています。

SaveChangesを呼び出す前のところでデバッガでrecを見てもそれぞれ小数3桁まで値がセットされているのを確認できるので、どこを直したらいいものなのか分からず困っています。

よろしくお願いします。




DbContextに精度を記載することで解決できました。

[code]

    public partial class ProjectDbContext : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
                modelBuilder.Entity<Table>()
                    .Property(e => e.dec12_3col)
                    .HasPrecision(12, 3);
    
                modelBuilder.Entity<Table>()
                    .Property(e => e.dec18_3col)
                    .HasPrecision(18, 3);
        }
    }
    
[/code]

この修正で小数3桁めも正常にセットされるようになりました。

