2011-11-09 4 views
1

最初にオフにしてください、これはすべて私の最初の投稿です。LINQ SQL Server CEから選択:指定されたキャストが無効です

私はSQLCEデータベースを作成し、データコンテキストとすべてのマッピングを作成して、データロードでデータベースを正常に埋めました。これまでのところ良い結果が得られました。データを取得したい場合は、問題が発生します。私はキャストを指定しますことを実行して取得したデータ

var codes = (from c in App.BonusDatabase.tbRawData 
      select c).ToList(); 

ため

コードは有効ではありません。私はそれが好きではない値があると推測していますが、値が何であるかをどのように見つけることができますか?

at System.Data.SqlServerCe.SqlCeDataReader.GetFloat(Int32 ordinal) 
at Read_RAW(ObjectMaterializer`1) 
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
at BAT.Bonus.BonusRun(Int32 Week) in Bonus.cs:line 36 
at BAT.Bonus.BonusRun() in Bonus.cs:line 25 
at BAT.winMain.worker_DoWork(Object sender, DoWorkEventArgs e) in winMain.xaml.cs:line 91 
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) 
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) 

編集:私は予想通りカウントがあるなど、SQLが別のプログラムにテーブルクエリを作成してコピーし、それは私がint型を持っていた回数をカウントするようになった、フロートチートとして[OK]をクリックします。私はそれからLINQマッピングでこれを繰り返したところ、一致する数があるので、マッピングが間違っているとは思わない。

編集2:私は、私は別のフィールドに

var codes = (from c in App.BonusDatabase.tbRawData 
     select c.PPH).ToList(); 

を変更する場合、これは正常に動作しますが、そう

var codes = (from c in App.BonusDatabase.tbRawData 
     select c.CODE).ToList(); 

私はちょうど、むしろのようなすべてのものよりも、1つのフィールドを選択するために、上記のコードを修正しましたエラーを取得します。これはこれが演奏されるものですか?もしそうなら、SQLデータベースと私のマッピングの両方で浮動小数点として宣言されている問題があるかもしれません。

答えて

1

クラスとテーブルの間のマッピングに、互換性のない型のデータベースフィールドにマッピングされたプロパティがあります。 nvarchar dbフィールドにマップされたintプロパティがあります。

+0

hhhhhhmmmmmmこれは、私が見ているテーブルがわずか100カラムを超えているのを見て迷惑になるでしょう。 – Gazlar

1

tbRawDataはどのように宣言されていますか?フィールド定義の1つがデータベースのフィールドと一致しない可能性があります。

+0

実際のデータベースにデータを入力する際に​​エラーが発生していませんか?それが間違ってマッピングされている場合、私はStringをIntフィールドに入れようとしました – Gazlar

+0

同じデータスクラップでデータベースを塗りつぶしましたか、別のツールで塗りつぶしましたか? – Fischermaen

+0

同じです。データはcsvファイルからのものです。テストとして、最初の行/行を除くcsvファイルからすべてのデータを削除しました。私はその後、SQLCEデータベースからすべてのデータを一掃し、その1行だけで補充しました。今私は私のコードを実行しても問題はありません。私は問題を推測しているのは、データベースを埋めることです。 – Gazlar

関連する問題