2016-01-13 14 views
8

私はEntity Framework 6.1、コードファーストを使用しています。 SQL Serverから10進数を格納/取得しようとしていますが、正確な精度は取得されません。私は.csvファイルから読み込み、データを処理してDBに挿入します。 .csvファイル内EF不正確な小数精度を取得します

  • 値:1.1390
  • 値インポートからdecimalとして保存:DBに挿入1.1390
  • 値:1.139
  • 値実際SSMSに示した/格納されている:1.1390
  • クエリを手動で実行するときの値SQLプロファイラは取得のためにキャプチャします。1.1390
  • EFで取得できる値: 1.1300

すべてが値を取得するため除いて取り組んでいます。私はすべての他のSOのポスト(下記)で与えられた解決策を試しましたが、効果はありません。ここで何がうまくいかないの?適切な精度で正しい値を取得するにはどうすればよいですか?

想定液:

modelBuilder.Entity<ClassA>().Property(p => p.MyDecimal).HasPrecision(19, 4); 

検索方法、戻って間違った精度でClassAを入力:

import.MyDecimal != dbValue.MyDecimal 

ClassA

進値の間

_poRepository.Table.FirstOrDefault(p => p.CompNumberA == compNum && 
             p.LineNumber == lineNumber); 

比較を

public class ClassA 
{ 
    // properties 
    public virtual decimal MyDecimal { get; set; } 
} 
+0

どのように精度「1.1300」を見ていますか? –

+1

あなたはどのようなEFアプローチを使用しているかについては言及していません。最初にコードを表示し、モデルを表示していません。誰も批判的な情報なしで誰も助けてくれるとは思わない –

+0

@BradleyUffner DBから返された値と.csvファイルから与えられた値の違いを調べる。その比較は、彼らが不平等であることを示している。ブレークポイントで変数を見ると、Visual Studioはその値を「1.1300」と表示します。 – vaindil

答えて

3

私は同じ方法で精度を指定する必要がありましたが、ClassAの流暢なマッピングではこれを指定する必要がありました。 OnModelCreating()でそれを指定していませんでしたが、流暢なマッピングができました。具体的には:

Property(u => u.MyDecimal).HasPrecision(19, 4); 
関連する問題